| // 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-Add', addSmi); | |
| addBenchmark('Number-Add', addNumber); | |
| addBenchmark('Number-Oddball-Add', addOddball); | |
| addBenchmark('String-Add', addString); | |
| addBenchmark('Number-String-Add', addNumberString); | |
| addBenchmark('Object-Add', addObject); | |
| addBenchmark('Smi-Sub', subSmi); | |
| addBenchmark('Number-Sub', subNumber); | |
| addBenchmark('Number-Oddball-Sub', subOddball); | |
| addBenchmark('Object-Sub', subObject); | |
| addBenchmark('Smi-Mul', mulSmi); | |
| addBenchmark('Number-Mul', mulNumber); | |
| addBenchmark('Number-Oddball-Mul', mulOddball); | |
| addBenchmark('Object-Mul', mulObject); | |
| addBenchmark('Smi-Div', divSmi); | |
| addBenchmark('Number-Div', divNumber); | |
| addBenchmark('Number-Oddball-Div', divOddball); | |
| addBenchmark('Object-Div', divObject); | |
| addBenchmark('Smi-Mod', modSmi); | |
| addBenchmark('Number-Mod', modNumber); | |
| addBenchmark('Number-Oddball-Mod', modOddball); | |
| addBenchmark('Object-Mod', modObject); | |
| addBenchmark('Smi-Constant-Add', addSmiConstant); | |
| addBenchmark('Smi-Constant-Sub', subSmiConstant); | |
| addBenchmark('Smi-Constant-Mul', mulSmiConstant); | |
| addBenchmark('Smi-Constant-Div', divSmiConstant); | |
| addBenchmark('Smi-Constant-Mod', modSmiConstant); | |
| addBenchmark('Smi-Increment', SmiIncrement); | |
| addBenchmark('Number-Increment', NumberIncrement); | |
| addBenchmark('Smi-Decrement', SmiDecrement); | |
| addBenchmark('Number-Decrement', NumberDecrement); | |
| function add(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 sub(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 mul(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 div(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 mod(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 addSmiConstant(a) { | |
| var a = 20; | |
| for (var i = 0; i < 1000; ++i) { | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | |
| } | |
| } | |
| function subSmiConstant() { | |
| var a = 20; | |
| for (var i = 0; i < 1000; ++i) { | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | |
| } | |
| } | |
| function mulSmiConstant() { | |
| var a = 20; | |
| for (var i = 0; i < 1000; ++i) { | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | |
| } | |
| } | |
| function divSmiConstant() { | |
| var a = 20; | |
| for (var i = 0; i < 1000; ++i) { | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | |
| } | |
| } | |
| function modSmiConstant() { | |
| var a = 20; | |
| for (var i = 0; i < 1000; ++i) { | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | |
| } | |
| } | |
| function inc(a) { | |
| for (var i = 0; i < 1000; ++i) { | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | |
| // To ensure it is always in SmiRange for Smi operation. | |
| a -= 1000; | |
| } | |
| } | |
| function dec(a) { | |
| for (var i = 0; i < 1000; ++i) { | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | |
| // To ensure it is always in SmiRange for Smi operation. | |
| a += 1000; | |
| } | |
| } | |
| function addSmi() { | |
| add(10, 20); | |
| } | |
| function addNumber() { | |
| add(0.333, 0.5); | |
| } | |
| function addOddball() { | |
| add(0.333, true); | |
| } | |
| function addString() { | |
| add("abc", "def"); | |
| } | |
| function addNumberString() { | |
| add("abc", 1.23); | |
| } | |
| function addObject() { | |
| add({x: 1, y:2}, {x:3, y:4}); | |
| } | |
| function subSmi() { | |
| sub(10, 20); | |
| } | |
| function subNumber() { | |
| sub(0.333, 0.5); | |
| } | |
| function subOddball() { | |
| sub(0.333, true); | |
| } | |
| function subObject() { | |
| sub({x: 1, y:2}, {x:3, y:4}); | |
| } | |
| function mulSmi() { | |
| mul(10, 20); | |
| } | |
| function mulNumber() { | |
| mul(0.333, 0.5); | |
| } | |
| function mulOddball() { | |
| mul(0.333, true); | |
| } | |
| function mulObject() { | |
| mul({x: 1, y:2}, {x:3, y:4}); | |
| } | |
| function divSmi() { | |
| div(10, 20); | |
| } | |
| function divNumber() { | |
| div(0.333, 0.5); | |
| } | |
| function divOddball() { | |
| div(0.333, true); | |
| } | |
| function divObject() { | |
| div({x: 1, y:2}, {x:3, y:4}); | |
| } | |
| function modSmi() { | |
| mod(10, 20); | |
| } | |
| function modNumber() { | |
| mod(0.333, 0.5); | |
| } | |
| function modOddball() { | |
| mod(0.333, true); | |
| } | |
| function modObject() { | |
| mod({x: 1, y:2}, {x:3, y:4}); | |
| } | |
| function SmiIncrement() { | |
| inc(3); | |
| } | |
| function NumberIncrement() { | |
| inc(0.33); | |
| } | |
| function SmiDecrement() { | |
| dec(3); | |
| } | |
| function NumberDecrement() { | |
| dec(0.33); | |
| } |