var buffer1 = new ArrayBuffer(1024 * Float64Array.BYTES_PER_ELEMENT);
var array = new Float64Array(buffer1);
var buffer2 = new ArrayBuffer(1024 * Float64Array.BYTES_PER_ELEMENT);
var view = new DataView(buffer2);
for (let i = 0; i < 1024; i += 1) {
if (i === 0) {
array[i] = 1;
} else {
array[i] = array[i-1] + i;;
}
}
for (let i = 0; i < 1024; i += 8) {
if (i === 0) {
view.setFloat64(i, 1);
} else {
view.setFloat64(i, view.getFloat64(i - 1) + i);
}
}
for (let i = 0; i < 1024; i += 1) {
if (i === 0) {
array[i] = 1;
} else {
array[i] = array[i-1] + i;
}
}
for (let i = 0; i < 1024; i += 8) {
if (i === 0) {
view.setFloat64(i, 1);
} else {
view.setFloat64(i, view.getFloat64(i - 1) + i);
}
}
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
array[i] = i; | |
view.setFloat64(i, i) | |
array[i] = i; 2 | |
view.setFloat64(i, i) 2 |
Test name | Executions per second |
---|---|
array[i] = i; | 370783.3 Ops/sec |
view.setFloat64(i, i) | 584219.1 Ops/sec |
array[i] = i; 2 | 373710.1 Ops/sec |
view.setFloat64(i, i) 2 | 590864.1 Ops/sec |
The benchmark named "DataView vs TypedArray Float64 fixed" compares two approaches to handling binary data in JavaScript: Typed Arrays (specifically Float64Array
) and DataView. Both approaches utilize binary buffers created using ArrayBuffer
, but they offer different methods for accessing and manipulating the numerical data stored in these buffers.
Typed Array (Float64Array):
Test Case:
for (let i = 0; i < 1024; i += 1) {
if (i === 0) {
array[i] = 1;
} else {
array[i] = array[i-1] + i;
}
}
Pros:
Cons:
Float64Array
for 64-bit floats).DataView:
Test Case:
for (let i = 0; i < 1024; i += 8) {
if (i === 0) {
view.setFloat64(i, 1);
} else {
view.setFloat64(i, view.getFloat64(i - 8) + i);
}
}
Pros:
Int32
, Float64
, etc.) in the same buffer. This is useful if different types of data are needed.Cons:
From the benchmark results, we see the following:
view.setFloat64(i, i) 2
test case, achieving around 546,298.625 executions per second.view.setFloat64(i, i)
) also performed well, just slightly less at about 535,164.0625 executions per second.Float64Array
and DataView
depend on ArrayBuffer
, which allows for efficient binary data storage. However, Typed Arrays provide better ease of use with built-in methods that can minimize overhead.DataView
appears to perform better in this benchmark with appropriate use of memory addresses and data manipulation.Int32Array
, Uint8Array
) or combinations of DataViews
can also be utilized.Overall, this benchmark provides insights into choosing between Typed Arrays and DataView based on performance, ease of use, and flexibility requirements in JavaScript applications.