forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathwebidl-buffer-source.js
More file actions
54 lines (48 loc) · 1.61 KB
/
webidl-buffer-source.js
File metadata and controls
54 lines (48 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
'use strict';
const common = require('../common.js');
const bench = common.createBenchmark(main, {
input: [
'arraybuffer',
'buffer',
'dataview',
'uint8array',
'uint8clampedarray',
'int8array',
'uint16array',
'int16array',
'uint32array',
'int32array',
'float16array',
'float32array',
'float64array',
'bigint64array',
'biguint64array',
],
n: [1e6],
}, { flags: ['--expose-internals'] });
function main({ n, input }) {
const { converters } = require('internal/webidl');
let value;
switch (input) {
case 'arraybuffer': value = new ArrayBuffer(32); break;
case 'buffer': value = Buffer.alloc(32); break;
case 'dataview': value = new DataView(new ArrayBuffer(32)); break;
case 'uint8array': value = new Uint8Array(32); break;
case 'uint8clampedarray': value = new Uint8ClampedArray(32); break;
case 'int8array': value = new Int8Array(32); break;
case 'uint16array': value = new Uint16Array(16); break;
case 'int16array': value = new Int16Array(16); break;
case 'uint32array': value = new Uint32Array(8); break;
case 'int32array': value = new Int32Array(8); break;
case 'float16array': value = new Float16Array(16); break;
case 'float32array': value = new Float32Array(8); break;
case 'float64array': value = new Float64Array(4); break;
case 'bigint64array': value = new BigInt64Array(4); break;
case 'biguint64array': value = new BigUint64Array(4); break;
}
const opts = { prefix: 'test', context: 'test' };
bench.start();
for (let i = 0; i < n; i++)
converters.BufferSource(value, opts);
bench.end(n);
}