'use strict'; const common = require('../common.js'); const types = [ 'Uint8', 'Uint16LE', 'Uint16BE', 'Uint32LE', 'Uint32BE', 'Int8', 'Int16LE', 'Int16BE', 'Int32LE', 'Int32BE', 'Float32LE', 'Float32BE', 'Float64LE', 'Float64BE' ]; const bench = common.createBenchmark(main, { type: types, millions: [1] }); const INT8 = 0x7f; const INT16 = 0x7fff; const INT32 = 0x7fffffff; const UINT8 = INT8 * 2; const UINT16 = INT16 * 2; const UINT32 = INT32 * 2; const mod = { setInt8: INT8, setInt16: INT16, setInt32: INT32, setUint8: UINT8, setUint16: UINT16, setUint32: UINT32 }; function main(conf) { const len = +conf.millions * 1e6; const ab = new ArrayBuffer(8); const dv = new DataView(ab, 0, 8); const type = conf.type || 'Uint8'; const le = /LE$/.test(type); const fn = `set${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) { const m = mod[fn]; const method = dv[fn]; bench.start(); for (var i = 0; i < len; i++) { method.call(dv, 0, i % m, le); } bench.end(len / 1e6); } function benchFloat(dv, fn, len, le) { const method = dv[fn]; bench.start(); for (var i = 0; i < len; i++) { method.call(dv, 0, i * 0.1, le); } bench.end(len / 1e6); }