diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/DataView/dataviewtest.js')
-rw-r--r-- | deps/v8/test/js-perf-test/DataView/dataviewtest.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/DataView/dataviewtest.js b/deps/v8/test/js-perf-test/DataView/dataviewtest.js index b94d5744fe..e8de3a2a9b 100644 --- a/deps/v8/test/js-perf-test/DataView/dataviewtest.js +++ b/deps/v8/test/js-perf-test/DataView/dataviewtest.js @@ -10,6 +10,10 @@ new BenchmarkSuite('DataViewTest-DataView-LittleEndian', [1000], [ new Benchmark('DataViewTest-DataView-LittleEndian', false, false, 0, doTestDataViewLittleEndian), ]); +new BenchmarkSuite('DataViewTest-DataView-Floats', [1000], [ + new Benchmark('DataViewTest-DataView-Floats', false, false, 0, doTestDataViewFloats), +]); + new BenchmarkSuite('DataViewTest-TypedArray-BigEndian', [1000], [ new Benchmark('DataViewTest-TypedArray-BigEndian', false, false, 0, doTestTypedArrayBigEndian), ]); @@ -18,6 +22,10 @@ new BenchmarkSuite('DataViewTest-TypedArray-LittleEndian', [1000], [ new Benchmark('DataViewTest-TypedArray-LittleEndian', false, false, 0, doTestTypedArrayLittleEndian), ]); +new BenchmarkSuite('DataViewTest-TypedArray-Floats', [1000], [ + new Benchmark('DataViewTest-TypedArray-Floats', false, false, 0, doTestTypedArrayFloats), +]); + function doTestDataViewBigEndian() { doIterations(false, true); } @@ -34,6 +42,14 @@ function doTestTypedArrayLittleEndian() { doIterations(true, false); } +function doTestDataViewFloats() { + doFloatIterations(true); +} + +function doTestTypedArrayFloats() { + doFloatIterations(false); +} + function doIterations(littleEndian, dataView) { var buffer = makeBuffer(1000, littleEndian); var iterations = 10; @@ -91,6 +107,50 @@ function doOneIterationJS(buffer, littleEndian) { } } +function doFloatIterations(dataView) { + var buffer = makeFloatBuffer(1000); + var iterations = 10; + if (dataView) { + for (var i = 0; i < iterations; i++) + doOneFloatIterationDV(buffer); + } else { + for (var i = 0; i < iterations; i++) + doOneFloatIterationJS(buffer); + } +} + +function makeFloatBuffer(size) { + var buffer = new ArrayBuffer(size * 16); + var view = new DataView(buffer); + for (var i = 0; i < size; i++) { + view.setFloat64(i * 16, Math.log10(i + 1)); + view.setFloat32(i * 16 + 8, Math.sqrt(i)); + view.setFloat32(i * 16 + 12, Math.cos(i)); + } + return buffer; +} + +function doOneFloatIterationDV(buffer) { + var sum = 0; + var view = new DataView(buffer); + for (var i = 0; i < view.byteLength; i += 16) { + sum += view.getFloat64(i); + sum += view.getFloat32(i + 8); + sum += view.getFloat32(i + 12); + } +} + +function doOneFloatIterationJS(buffer) { + var sum = 0; + var float32array = new Float32Array(buffer); + var float64array = new Float64Array(buffer); + for (var i = 0; i < buffer.byteLength; i += 16) { + sum += float64array[i/8]; + sum += float32array[i/4 + 2]; + sum += float32array[i/4 + 3]; + } +} + function BigEndian(buffer, opt_byteOffset) { this.uint8View_ = new Uint8Array(buffer, opt_byteOffset || 0); this.int8View_ = new Int8Array(buffer, opt_byteOffset || 0); |