Last active
October 29, 2018 15:43
-
-
Save DoonDoony/a89601e51e709c6c5a2b614950e7e536 to your computer and use it in GitHub Desktop.
A code snipper for memoized getter performance test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Required only nodejs | |
const { performance } = require('perf_hooks'); | |
const obj = { | |
get memoizedGetter() { | |
delete this.memoizedGetter; | |
return this.memoizedGetter = [...Array(5e+7).keys()].reduce((prev, num) => prev + num, 0); | |
}, | |
get commonGetter() { | |
return [...Array(5e+7).keys()].reduce((prev, num) => prev + num, 0); | |
}, | |
}; | |
const measureExecutionTime = (functionName, fn) => { | |
const start = performance.now(); | |
fn(); | |
return `[${functionName}] Elasped Time: ${performance.now() - start} ms`; | |
}; | |
console.log(measureExecutionTime('Memoized Getter Test1', () => obj.memoizedGetter)); | |
console.log(measureExecutionTime('Memoized Getter Test2', () => obj.memoizedGetter)); | |
console.log(measureExecutionTime('Memoized Getter Test3', () => obj.memoizedGetter)); | |
console.log(measureExecutionTime('Common Getter Test1', () => obj.commonGetter)); | |
console.log(measureExecutionTime('Common Getter Test2', () => obj.commonGetter)); | |
console.log(measureExecutionTime('Common Getter Test3', () => obj.commonGetter)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment