bench: Add buffers/dataview_set
This commit is contained in:
parent
56b22956ad
commit
3f67a48dd4
57
benchmark/buffers/dataview_set.js
Normal file
57
benchmark/buffers/dataview_set.js
Normal file
@ -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);
|
||||||
|
}
|
@ -1,104 +0,0 @@
|
|||||||
const LEN = 1e7;
|
|
||||||
|
|
||||||
const INT8 = 0x7f;
|
|
||||||
const INT16 = 0x7fff;
|
|
||||||
const INT32 = 0x7fffffff;
|
|
||||||
const UINT8 = INT8 * 2;
|
|
||||||
const UINT16 = INT16 * 2;
|
|
||||||
const UINT32 = INT32 * 2;
|
|
||||||
|
|
||||||
const noAssert = process.argv[3] == 'true' ? true
|
|
||||||
: process.argv[3] == 'false' ? false
|
|
||||||
: undefined;
|
|
||||||
|
|
||||||
var timer = require('./_bench_timer');
|
|
||||||
|
|
||||||
var buff = (process.argv[2] == 'slow') ?
|
|
||||||
(new require('buffer').SlowBuffer(8)) :
|
|
||||||
(new Buffer(8));
|
|
||||||
var dv = new DataView(buff);
|
|
||||||
var i;
|
|
||||||
|
|
||||||
timer('setUint8', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setUint8(0, i % UINT8);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setUint16 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setUint16(0, i % UINT16, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setUint16 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setUint16(0, i % UINT16);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setUint32 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setUint32(0, i % UINT32, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setUint32 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setUint32(0, i % UINT32);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setInt8', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setInt8(0, i % INT8);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setInt16 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setInt16(0, i % INT16, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setInt16 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setInt16(0, i % INT16);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setInt32 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setInt32(0, i % INT32, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setInt32 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setInt32(0, i % INT32);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setFloat32 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setFloat32(0, i * 0.1, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setFloat32 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setFloat32(0, i * 0.1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setFloat64 - LE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setFloat64(0, i * 0.1, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
timer('setFloat64 - BE', function() {
|
|
||||||
for (i = 0; i < LEN; i++) {
|
|
||||||
dv.setFloat64(0, i * 0.1);
|
|
||||||
}
|
|
||||||
});
|
|
Loading…
x
Reference in New Issue
Block a user