Last active
January 4, 2021 00:55
-
-
Save pdewacht/bfd32d747ebaa7311c399caf9ac55a3d to your computer and use it in GitHub Desktop.
dataview test (https://jsbench.github.io/#bfd32d747ebaa7311c399caf9ac55a3d) #jsbench #jsperf
This file contains hidden or 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>dataview test</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 hidden or 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 loops = 100000; | |
var size = 4*loops; | |
var buffer = new ArrayBuffer(size); | |
var dataview = new DataView(buffer); | |
var int32 = new Int32Array(buffer); | |
var uint8 = new Uint8Array(buffer); | |
for (var i = 0; i < size; i += 8) { | |
dataview.setFloat64(i, Math.random()); | |
} | |
var result = [] | |
}; | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getInt32(i*4); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getInt32(i*4, true); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getUint32(i*4); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getUint32(i*2, true); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getInt16(i*2); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getInt16(i*2, true); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ dataview.getInt8(i); | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ int32[i]; | |
} | |
result.push(x); | |
}); | |
suite.add("var x = 0;", function () { | |
var x = 0; | |
for (var i = 0; i < loops; i++) { | |
x = x ^ ((uint8[i*4] << 24) | (uint8[i*4+1] << 16) | (uint8[i*4+2] << 8) | uint8[i*4+3]); | |
} | |
result.push(x) | |
}); | |
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("dataview test"); | |
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