@oaklean/profiler-core
Version:
Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec
37 lines • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.memoize = void 0;
/**
* Memoizes a function by caching its results for future invocations with the same arguments.
* @param func The function to memoize.
* @returns A memoized version of the function.
*
* Example usage:
*
* function expensiveOperation(n: number): number {
* console.log('Computing...');
* return n * 2;
* }
*
* const memoizedOperation = memoize(expensiveOperation);
*
* console.log(memoizedOperation(5)); // Computing... 10
* console.log(memoizedOperation(5)); // 10 (cached)
* console.log(memoizedOperation(6)); // Computing... 12
* console.log(memoizedOperation(6)); // 12 (cached)
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function memoize(func) {
const cache = new Map();
return ((...args) => {
const key = JSON.stringify(args);
if (cache.has(key)) {
return cache.get(key);
}
const result = func(...args);
cache.set(key, result);
return result;
});
}
exports.memoize = memoize;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXIvbWVtb2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsOERBQThEO0FBQzlELFNBQWdCLE9BQU8sQ0FBb0MsSUFBTztJQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRXZCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBbUIsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFaEMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUM1QixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUV0QixPQUFPLE1BQU0sQ0FBQTtJQUNkLENBQUMsQ0FBTSxDQUFBO0FBQ1IsQ0FBQztBQWZELDBCQWVDIn0=