diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/BytecodeHandlers/compare.js')
-rw-r--r-- | deps/v8/test/js-perf-test/BytecodeHandlers/compare.js | 157 |
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"); +} |