diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/BigInt/as-uint-n.js')
-rw-r--r-- | deps/v8/test/js-perf-test/BigInt/as-uint-n.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/BigInt/as-uint-n.js b/deps/v8/test/js-perf-test/BigInt/as-uint-n.js new file mode 100644 index 0000000000..f69d4978db --- /dev/null +++ b/deps/v8/test/js-perf-test/BigInt/as-uint-n.js @@ -0,0 +1,86 @@ +// Copyright 2019 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +"use strict"; + +load('bigint-util.js'); + +// This dummy ensures that the feedback for benchmark.run() in the Measure +// function from base.js is not monomorphic, thereby preventing the benchmarks +// below from being inlined. This ensures consistent behavior and comparable +// results. +new BenchmarkSuite('Prevent-Inline-Dummy', [10000], [ + new Benchmark('Prevent-Inline-Dummy', true, false, 0, () => {}) +]); + + +[32, 64, 128, 256].forEach((d) => { + new BenchmarkSuite(`AsUint64-${d}`, [1000], [ + new Benchmark(`AsUint64-${d}`, true, false, 0, TestAsUint64, + () => SetUpTestAsUintN(d)) + ]); +}); + + +[32, 64, 128, 256].forEach((d) => { + new BenchmarkSuite(`AsUint32-${d}`, [1000], [ + new Benchmark(`AsUint32-${d}`, true, false, 0, TestAsUint32, + () => SetUpTestAsUintN(d)) + ]); +}); + + +[32, 64, 128, 256].forEach((d) => { + new BenchmarkSuite(`AsUint8-${d}`, [1000], [ + new Benchmark(`AsUint8-${d}`, true, false, 0, TestAsUint8, + () => SetUpTestAsUintN(d)) + ]); +}); + + +function SetUpTestAsUintN(d) { + random_bigints = [ + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d), + RandomBigIntWithBits(d) + ]; +} + + +function TestAsUint64() { + let result = 0n; + + for (let i = 0; i < TEST_ITERATIONS; ++i) { + result = BigInt.asUintN(64, random_bigints[i % 8]); + } + + return result; +} + + +function TestAsUint32() { + let result = 0n; + + for (let i = 0; i < TEST_ITERATIONS; ++i) { + result = BigInt.asUintN(32, random_bigints[i % 8]); + } + + return result; +} + + +function TestAsUint8() { + let result = 0n; + + for (let i = 0; i < TEST_ITERATIONS; ++i) { + result = BigInt.asUintN(8, random_bigints[i % 8]); + } + + return result; +} |