summaryrefslogtreecommitdiff
path: root/deps/v8/test/js-perf-test/BigInt/as-uint-n.js
diff options
context:
space:
mode:
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.js86
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;
+}