Created
September 12, 2016 04:15
-
-
Save reekoheek/42e7a8f01e4ad334354b764a1a64ae68 to your computer and use it in GitHub Desktop.
benchmark several object creation methods (http://jsbench.github.io/#42e7a8f01e4ad334354b764a1a64ae68) #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>benchmark several object creation methods</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; | |
suite.add("function Foo() {", function () { | |
function Foo() { | |
this.bar = 'baz'; | |
} | |
Foo.prototype.getBar = function() { | |
return this.bar; | |
} | |
for(var i = 0; i < 100; i++) { | |
var foo = new Foo(); | |
var x = foo.getBar(); | |
} | |
}); | |
suite.add("function Foo() {", function () { | |
function Foo() { | |
this.bar = 'baz'; | |
} | |
Foo.prototype = { | |
bar: '', | |
getBar: function() { | |
return this.bar; | |
} | |
}; | |
for(var i = 0; i < 100; i++) { | |
var foo = new Foo(); | |
var x = foo.getBar(); | |
} | |
}); | |
suite.add("function fooing() {", function () { | |
function fooing() { | |
var x ={ | |
bar: 'baz', | |
getBar: function() { | |
return this.bar; | |
} | |
}; | |
return x; | |
} | |
for(var i = 0; i < 100; i++) { | |
var foo = fooing(); | |
var x = foo.getBar(); | |
} | |
}); | |
suite.add("var FooProto = {", function () { | |
var FooProto = { | |
getBar: function() { | |
return this.bar; | |
} | |
} | |
for(var i = 0; i < 100; i++) { | |
var foo = Object.create(FooProto,{ | |
bar: { | |
value: 'baz', | |
} | |
}); | |
var x = foo.getBar(); | |
} | |
}); | |
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("benchmark several object creation methods"); | |
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