Chapter 10: Optimizing Synchronous Functions samples
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
const benchmark = require("benchmark");
|
||||||
|
const slow = require("./slow");
|
||||||
|
const loop = require("./loop");
|
||||||
|
const suite = new benchmark.Suite();
|
||||||
|
const maxNumber = 100; // number to pass through to sumOfSquares()
|
||||||
|
|
||||||
|
suite.add("slow", function () {
|
||||||
|
slow(maxNumber);
|
||||||
|
});
|
||||||
|
|
||||||
|
suite.add("loop", function () {
|
||||||
|
loop(maxNumber);
|
||||||
|
});
|
||||||
|
|
||||||
|
suite.on("complete", printResults);
|
||||||
|
suite.run();
|
||||||
|
|
||||||
|
function printResults() {
|
||||||
|
this.forEach((benchmark) => {
|
||||||
|
console.log(benchmark.toString());
|
||||||
|
});
|
||||||
|
console.log("Fastest implementation is", this.filter("fastest")[0].name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
function sumOfSquares(maxNumber) {
|
||||||
|
let i = 0;
|
||||||
|
let sum = 0;
|
||||||
|
for (i; i <= maxNumber; i++) {
|
||||||
|
sum += i ** 2;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = sumOfSquares;
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "optimize-sync",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"benchmark": {
|
||||||
|
"version": "2.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz",
|
||||||
|
"integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=",
|
||||||
|
"requires": {
|
||||||
|
"lodash": "^4.17.4",
|
||||||
|
"platform": "^1.3.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lodash": {
|
||||||
|
"version": "4.17.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||||
|
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
|
||||||
|
},
|
||||||
|
"platform": {
|
||||||
|
"version": "1.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
|
||||||
|
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "optimize-sync",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"benchmark": "^2.1.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
function sumOfSquares(maxNumber) {
|
||||||
|
const array = Array.from(Array(maxNumber + 1).keys());
|
||||||
|
|
||||||
|
return array
|
||||||
|
.map((number) => {
|
||||||
|
return number ** 2;
|
||||||
|
})
|
||||||
|
.reduce((accumulator, item) => {
|
||||||
|
return accumulator + item;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = sumOfSquares;
|
||||||
Reference in New Issue
Block a user