diff options
author | isaacs <i@izs.me> | 2013-02-11 22:01:50 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2013-02-19 14:14:33 -0800 |
commit | 3f67a48dd461e1454b81cde33f5c005de5910fa3 (patch) | |
tree | 2f22d1c3400cb1fda3628a0aa3a6096dc581717b /benchmark/buffers | |
parent | 56b22956ad3c76a747b359452fec987eab4fac5e (diff) | |
download | android-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.js | 57 |
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); +} |