summaryrefslogtreecommitdiff
path: root/deps/v8/test/js-perf-test/BytecodeHandlers/compare.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/js-perf-test/BytecodeHandlers/compare.js')
-rw-r--r--deps/v8/test/js-perf-test/BytecodeHandlers/compare.js157
1 files changed, 157 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/BytecodeHandlers/compare.js b/deps/v8/test/js-perf-test/BytecodeHandlers/compare.js
new file mode 100644
index 0000000000..ea12ff4b21
--- /dev/null
+++ b/deps/v8/test/js-perf-test/BytecodeHandlers/compare.js
@@ -0,0 +1,157 @@
+// Copyright 2017 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.
+
+function addBenchmark(name, test) {
+ new BenchmarkSuite(name, [1000],
+ [
+ new Benchmark(name, false, false, 0, test)
+ ]);
+}
+
+addBenchmark('Smi-StrictEquals-True', SmiStrictEqualsTrue);
+addBenchmark('Smi-StrictEquals-False', SmiStrictEqualsFalse);
+addBenchmark('Number-StrictEquals-True', NumberStrictEqualsTrue);
+addBenchmark('Number-StrictEquals-False', NumberStrictEqualsFalse);
+addBenchmark('String-StrictEquals-True', StringStrictEqualsTrue);
+addBenchmark('String-StrictEquals-False', StringStrictEqualsFalse);
+addBenchmark('SmiString-StrictEquals', MixedStrictEquals);
+addBenchmark('Smi-Equals-True', SmiEqualsTrue);
+addBenchmark('Smi-Equals-False', SmiEqualsFalse);
+addBenchmark('Number-Equals-True', NumberEqualsTrue);
+addBenchmark('Number-Equals-False', NumberEqualsFalse);
+addBenchmark('String-Equals-True', StringEqualsTrue);
+addBenchmark('String-Equals-False', StringEqualsFalse);
+addBenchmark('SmiString-Equals', MixedEquals);
+addBenchmark('ObjectNull-Equals', ObjectEqualsNull);
+addBenchmark('Smi-RelationalCompare', SmiRelationalCompare);
+addBenchmark('Number-RelationalCompare', NumberRelationalCompare);
+addBenchmark('String-RelationalCompare', StringRelationalCompare);
+addBenchmark('SmiString-RelationalCompare', MixedRelationalCompare);
+
+var null_object;
+
+function strictEquals(a, b) {
+ for (var i = 0; i < 1000; ++i) {
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b; a === b;
+ }
+}
+
+function equals(a, b) {
+ for (var i = 0; i < 1000; ++i) {
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b; a == b;
+ }
+}
+
+// Relational comparison handlers are similar, so use one benchmark to measure
+// all of them.
+function relationalCompare(a, b) {
+ for (var i = 0; i < 1000; ++i) {
+ a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b;
+ a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b;
+ a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b; a > b;
+ a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b;
+ a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b;
+ a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b; a >= b;
+ a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b;
+ a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b;
+ a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b; a < b;
+ a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b;
+ a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b;
+ a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b; a <= b;
+ }
+}
+
+function SmiStrictEqualsFalse() {
+ strictEquals(10, 20);
+}
+
+function SmiStrictEqualsTrue() {
+ strictEquals(10, 10);
+}
+
+function NumberStrictEqualsFalse() {
+ strictEquals(0.3333, 0.3334);
+}
+
+function NumberStrictEqualsTrue() {
+ strictEquals(0.3333, 0.3333);
+}
+
+function StringStrictEqualsFalse() {
+ strictEquals("abc", "def");
+}
+
+function StringStrictEqualsTrue() {
+ strictEquals("abc", "abc");
+}
+
+function MixedStrictEquals() {
+ strictEquals(10, "10");
+}
+
+function SmiEqualsFalse() {
+ equals(10, 20);
+}
+
+function SmiEqualsTrue() {
+ equals(10, 10);
+}
+
+function NumberEqualsFalse() {
+ equals(0.3333, 0.3334);
+}
+
+function NumberEqualsTrue() {
+ equals(0.3333, 0.3333);
+}
+
+function StringEqualsFalse() {
+ equals("abc", "def");
+}
+
+function StringEqualsTrue() {
+ equals("abc", "abc");
+}
+
+function MixedEquals() {
+ equals(10, "10");
+}
+
+function ObjectEqualsNull(null_object) {
+ equals(null_object, null);
+}
+
+function SmiRelationalCompare() {
+ relationalCompare(10, 20);
+}
+
+function NumberRelationalCompare() {
+ relationalCompare(0.3333, 0.3334);
+}
+
+function StringRelationalCompare() {
+ relationalCompare("abc", "def");
+}
+
+function MixedRelationalCompare() {
+ relationalCompare(10, "10");
+}