aboutsummaryrefslogtreecommitdiff
path: root/benchmark/buffers
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-02-11 22:01:50 -0800
committerisaacs <i@izs.me>2013-02-19 14:14:33 -0800
commit3f67a48dd461e1454b81cde33f5c005de5910fa3 (patch)
tree2f22d1c3400cb1fda3628a0aa3a6096dc581717b /benchmark/buffers
parent56b22956ad3c76a747b359452fec987eab4fac5e (diff)
downloadandroid-node-v8-3f67a48dd461e1454b81cde33f5c005de5910fa3.tar.gz
android-node-v8-3f67a48dd461e1454b81cde33f5c005de5910fa3.tar.bz2
android-node-v8-3f67a48dd461e1454b81cde33f5c005de5910fa3.zip
bench: Add buffers/dataview_set
Diffstat (limited to 'benchmark/buffers')
-rw-r--r--benchmark/buffers/dataview_set.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/benchmark/buffers/dataview_set.js b/benchmark/buffers/dataview_set.js
new file mode 100644
index 0000000000..ce0064edb6
--- /dev/null
+++ b/benchmark/buffers/dataview_set.js
@@ -0,0 +1,57 @@
+
+var common = require('../common.js');
+var bench = common.createBenchmark(main, {
+ type: ['Uint8', 'Uint16LE', 'Uint16BE',
+ 'Uint32LE', 'Uint32BE',
+ 'Int8', 'Int16LE', 'Int16BE',
+ 'Int32LE', 'Int32BE',
+ 'Float32LE', 'Float32BE',
+ 'Float64LE', 'Float64BE'],
+ millions: [1]
+});
+
+const INT8 = 0x7f;
+const INT16 = 0x7fff;
+const INT32 = 0x7fffffff;
+const UINT8 = INT8 * 2;
+const UINT16 = INT16 * 2;
+const UINT32 = INT32 * 2;
+
+var mod = {
+ setInt8: INT8,
+ setInt16: INT16,
+ setInt32: INT32,
+ setUint8: UINT8,
+ setUint16: UINT16,
+ setUint32: UINT32
+};
+
+function main(conf) {
+ var len = +conf.millions * 1e6;
+ var ab = new ArrayBuffer(8);
+ var dv = new DataView(ab, 0, 8);
+ var le = /LE$/.test(conf.type);
+ var fn = 'set' + conf.type.replace(/[LB]E$/, '');
+
+ if (/int/i.test(fn))
+ benchInt(dv, fn, len, le);
+ else
+ benchFloat(dv, fn, len, le);
+}
+
+function benchInt(dv, fn, len, le) {
+ var m = mod[fn];
+ bench.start();
+ for (var i = 0; i < len; i++) {
+ dv[fn](0, i % m, le);
+ }
+ bench.end(len / 1e6);
+}
+
+function benchFloat(dv, fn, len, le) {
+ bench.start();
+ for (var i = 0; i < len; i++) {
+ dv[fn](0, i * 0.1, le);
+ }
+ bench.end(len / 1e6);
+}