Created
September 2, 2019 13:16
-
-
Save warpech/67a3a2de9fc39278ee04812857b7338b to your computer and use it in GitHub Desktop.
Two arrays vs one array + type checking (http://jsbench.github.io/#67a3a2de9fc39278ee04812857b7338b) #jsbench #jsperf
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
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"/> | |
<title>Two arrays vs one array + type checking</title> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script> | |
<script src="./suite.js"></script> | |
</head> | |
<body> | |
<h1>Open the console to view the results</h1> | |
<h2><code>cmd + alt + j</code> or <code>ctrl + alt + j</code></h2> | |
</body> | |
</html> |
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
"use strict"; | |
(function (factory) { | |
if (typeof Benchmark !== "undefined") { | |
factory(Benchmark); | |
} else { | |
factory(require("benchmark")); | |
} | |
})(function (Benchmark) { | |
var suite = new Benchmark.Suite; | |
Benchmark.prototype.setup = function () { | |
const typeA = [{foo: true},{foo: true},{foo: true},{foo: true},{foo: true}]; | |
typeA.concat(typeA); | |
typeA.concat(typeA); | |
typeA.concat(typeA); | |
typeA.concat(typeA); | |
const typeB = [{foo: true},{foo: true},{foo: true},{foo: true},{foo: true}]; | |
typeB.concat(typeB); | |
typeB.concat(typeB); | |
typeB.concat(typeB); | |
typeB.concat(typeB); | |
const mixed = [{foo: true, type: 'typeA'},{foo: true, type: 'typeB'},{foo: true, type: 'typeA'},{foo: true, type: 'typeB'},{foo: true, type: 'typeA'},{foo: true, type: 'typeB'},{foo: true, type: 'typeA'},{foo: true, type: 'typeB'},{foo: true, type: 'typeA'},{foo: true, type: 'typeB'},]; | |
mixed.concat(mixed); | |
mixed.concat(mixed); | |
mixed.concat(mixed); | |
mixed.concat(mixed); | |
}; | |
suite.add("for (let i = 0; i < typeA.length; i++) {", function () { | |
for (let i = 0; i < typeA.length; i++) { | |
typeA[i].bar = !typeA[i].foo; | |
} | |
for (let i = 0; i < typeB.length; i++) { | |
typeB[i].bar = typeB[i].foo; | |
} | |
}); | |
suite.add("for (let i = 0; i < mixed.length; i++) {", function () { | |
for (let i = 0; i < mixed.length; i++) { | |
if (mixed[i].type === 'typeA') { | |
mixed[i].bar = !mixed[i].foo; | |
} | |
else if(mixed[i].type === 'typeB') { | |
mixed[i].bar = mixed[i].foo; | |
} | |
} | |
}); | |
suite.on("cycle", function (evt) { | |
console.log(" - " + evt.target); | |
}); | |
suite.on("complete", function (evt) { | |
console.log(new Array(30).join("-")); | |
var results = evt.currentTarget.sort(function (a, b) { | |
return b.hz - a.hz; | |
}); | |
results.forEach(function (item) { | |
console.log((idx + 1) + ". " + item); | |
}); | |
}); | |
console.log("Two arrays vs one array + type checking"); | |
console.log(new Array(30).join("-")); | |
suite.run(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment