Skip to content

Instantly share code, notes, and snippets.

@samosad
Forked from RubaXa/index.html
Created November 15, 2016 09:48
Show Gist options
  • Save samosad/1e36f485d47f9cf8009eec50a1b80457 to your computer and use it in GitHub Desktop.
Save samosad/1e36f485d47f9cf8009eec50a1b80457 to your computer and use it in GitHub Desktop.
arguments: Array#slice, Array#apply, Array.from, fo, while and rest #jsbench #jsperf (http://jsbench.github.io/#1e36f485d47f9cf8009eec50a1b80457) #jsbench #jsperf
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>arguments: Array#slice, Array#apply, Array.from, fo, while and rest #jsbench #jsperf</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>
"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 rnd = Math.random;
var slice = [].slice;
var results = [];
function resolve(callback) {
var retVal = callback(rnd(), rnd(), rnd(), rnd(), rnd());
if (retVal.length !== 5) {
throw 'FAIL:retVal';
}
results.push(retVal);
}
};
Benchmark.prototype.teardown = function () {
if (results.length < 1) {
throw 'FAIL:results';
}
};
suite.add("Array#slice.call", function () {
/** Array#slice.call **/
resolve(function () {
return slice.call(arguments, 0);
});
});
suite.add("Array#slice.apply", function () {
/** Array#slice.apply **/
resolve(function () {
return slice.apply(arguments);
});
});
suite.add("Array.from", function () {
/** Array.from **/
resolve(function () {
return Array.from(arguments);
});
});
suite.add("for", function () {
/** for **/
resolve(function () {
var args = [];
for (var i = 0, n = arguments.length; i < n; i++) {
args[i] = arguments[i];
}
return args;
});
});
suite.add("while", function () {
/** while **/
resolve(function () {
var args = [];
var idx = arguments.length;
while (idx--) {
args[idx] = arguments[idx];
}
return args;
});
});
suite.add("rest", function () {
/** rest **/
resolve(function (...args) {
return args;
});
});
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("arguments: Array#slice, Array#apply, Array.from, fo, while and rest #jsbench #jsperf");
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