| // 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"); |
| } |