Last active
December 19, 2016 20:07
-
-
Save kylpo/e66d4836d1afb2cbef779e9bcaa6365e to your computer and use it in GitHub Desktop.
object clone/delete vs new/loop-and-add (http://jsbench.github.io/#e66d4836d1afb2cbef779e9bcaa6365e) #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>Untitled benchmark</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 () { | |
var original = {one: 1, two: 2, three: 3, four: 4, five: 5, six: 6} | |
var keptKeys = ['one', 'three', 'five'] | |
}; | |
suite.add("var deleteCopy = Object.assign({}, original)", function () { | |
var deleteCopy = Object.assign({}, original) | |
delete deleteCopy.two | |
delete deleteCopy.four | |
delete deleteCopy.six | |
}); | |
suite.add("var copy = {}", function () { | |
var copy = {} | |
for (let key in original) { | |
if (keptKeys.indexOf(key) > -1) { | |
copy[key] = original[key] | |
} | |
} | |
}); | |
suite.add("var deleteCopy = Object.assign({}, original)", function () { | |
var deleteCopy = Object.assign({}, original) | |
deleteCopy.two = undefined | |
deleteCopy.four = undefined | |
deleteCopy.six = undefined | |
}); | |
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("Untitled benchmark"); | |
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