feat: 拆分 stress benchmark 到细粒度单热点测试并修复 bench 采样逻辑
This commit is contained in:
@@ -46,7 +46,7 @@ pub fn run_js_stress_bench(config: &BenchConfig, kernel: &Arc<KernelCore>, pool:
|
||||
|
||||
for path in &files {
|
||||
let test_name = path.file_stem().unwrap_or_default().to_string_lossy().to_string();
|
||||
let mut js = match fs::read_to_string(path) {
|
||||
let js = match fs::read_to_string(path) {
|
||||
Ok(s) => s,
|
||||
Err(e) => {
|
||||
eprintln!("Failed to read {:?}: {}", path, e);
|
||||
@@ -54,10 +54,6 @@ pub fn run_js_stress_bench(config: &BenchConfig, kernel: &Arc<KernelCore>, pool:
|
||||
}
|
||||
};
|
||||
|
||||
if config.iterations > 0 {
|
||||
js = override_iterations(&js, config.iterations);
|
||||
}
|
||||
|
||||
let allocator = Allocator::default();
|
||||
let program = match oxide_parser::parse(&allocator, &js) {
|
||||
Ok(p) => p,
|
||||
@@ -196,15 +192,3 @@ fn average_metrics(metrics: &[MetricCollection]) -> MetricCollection {
|
||||
}
|
||||
}
|
||||
|
||||
fn override_iterations(js: &str, iters: u32) -> String {
|
||||
js.lines()
|
||||
.map(|line| {
|
||||
if line.trim_start().starts_with("var ITERATIONS ") {
|
||||
format!("var ITERATIONS = {};", iters)
|
||||
} else {
|
||||
line.to_string()
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n")
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += i * 2 + 3 - 1 / 2;
|
||||
sum += (i % 7) * 3;
|
||||
sum += i & 255;
|
||||
sum += i >> 2;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 2000;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var out = base.filter(function (x) { return x % 2 === 0; });
|
||||
sum += out.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 2000;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
base.forEach(function (x) { sum += x; });
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
arr.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
sum += arr[500];
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
arr.push(0);
|
||||
}
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
arr[500] = j;
|
||||
}
|
||||
arr[500]
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var arr = [];
|
||||
for (var j = 0; j < 10; j++) {
|
||||
arr.push(j);
|
||||
}
|
||||
var joined = arr.join(",");
|
||||
sum += joined.length;
|
||||
}
|
||||
sum
|
||||
@@ -2,6 +2,7 @@ var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += (+"42") + (+"3.14") + (+"0");
|
||||
var arr = [1, 2, 3];
|
||||
sum += arr.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 2000;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var out = base.map(function (x) { return x + 1; });
|
||||
sum += out[0];
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var arr = [];
|
||||
for (var j = 0; j < 10; j++) {
|
||||
arr.push(j);
|
||||
}
|
||||
var popped = arr.pop();
|
||||
sum += popped;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 2000;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var out = base.reduce(function (acc, x) { return acc + x; }, 0);
|
||||
sum += out;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 3000;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var out = base.slice();
|
||||
sum += out.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 500;
|
||||
|
||||
var base = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
base.push(100 - i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var out = base.slice();
|
||||
out.sort(function (a, b) { return a - b; });
|
||||
sum += out[0];
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
if (i % 2 === 0) {
|
||||
sum += 1;
|
||||
} else if (i % 3 === 0) {
|
||||
sum += 2;
|
||||
} else {
|
||||
sum += 3;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,12 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
switch (i % 4) {
|
||||
case 0: sum += 0; break;
|
||||
case 1: sum += 1; break;
|
||||
case 2: sum += 2; break;
|
||||
default: sum += 3; break;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -1,7 +0,0 @@
|
||||
var ITERATIONS = 200;
|
||||
|
||||
function sumTo(n) {
|
||||
if (n <= 0) return 0;
|
||||
return n + sumTo(n - 1);
|
||||
}
|
||||
sumTo(ITERATIONS)
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
function add(a, b, c, d) {
|
||||
return a + b + c + d;
|
||||
}
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += add(i, i + 1, i + 2, i + 3);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,14 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
function outer() {
|
||||
var x = 1;
|
||||
return function (n) {
|
||||
return x + n;
|
||||
};
|
||||
}
|
||||
var inner = outer();
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += inner(i);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var obj = { value: 1, add: function (n) { return this.value + n; } };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += obj.add(i);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,14 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
function Animal(name) {
|
||||
this.name = name;
|
||||
}
|
||||
Animal.prototype.getName = function () {
|
||||
return this.name;
|
||||
};
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var a = new Animal("x");
|
||||
sum += a.getName().length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 200;
|
||||
|
||||
function fib(n) {
|
||||
if (n <= 1) return n;
|
||||
return fib(n - 1) + fib(n - 2);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += fib(15) % 10;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var obj = {
|
||||
value: 10,
|
||||
getValue: function () { return this.value; },
|
||||
setValue: function (v) { this.value = v; return this; }
|
||||
};
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
obj.setValue(i);
|
||||
sum += obj.getValue();
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var n = i & 1;
|
||||
sum += n == 0;
|
||||
sum += n != 1;
|
||||
sum += n === 0;
|
||||
sum += n !== 1;
|
||||
sum += n < 2;
|
||||
sum += n >= 0;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += (i % 2 === 0) ? true : false;
|
||||
sum += i === 0 ? 0 : 1;
|
||||
sum += i > 0 ? 1 : 0;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,7 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += "42" + i;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var obj = { value: 5 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += obj.value ?? 0;
|
||||
sum += obj.missing ?? 42;
|
||||
var x = (i % 2 === 0) ? 1 : null;
|
||||
sum += x ?? 7;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,7 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += +"42" + +"3.14" + +"0" + +"0.5" + +"1e3";
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var obj = { valueOf: function () { return 42; }, toString: function () { return "42"; } };
|
||||
sum += obj + 1;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,7 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += String(42) + String(3.14) + String(0) + String(true) + String(null);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 5000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var arr = [];
|
||||
for (var j = 0; j < 50; j++) {
|
||||
arr.push(j);
|
||||
}
|
||||
sum += arr.length;
|
||||
}
|
||||
sum
|
||||
@@ -1,11 +1,8 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
arr.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
while (arr.length > 0) {
|
||||
sum += arr.pop();
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var obj = { a: i, b: i * 2 };
|
||||
sum += obj.a + obj.b;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var s = "str" + i;
|
||||
sum += s.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var a = { x: 1, y: 2, z: 3 };
|
||||
var b = { x: 4, y: 5, z: 6 };
|
||||
var c = { x: 7, y: 8, z: 9 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var t = (i % 3 === 0) ? a : (i % 3 === 1) ? b : c;
|
||||
sum += t.x + t.y + t.z;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 200000;
|
||||
|
||||
var sum = 0;
|
||||
var i = 0;
|
||||
do {
|
||||
sum += i;
|
||||
i++;
|
||||
} while (i < ITERATIONS);
|
||||
sum
|
||||
@@ -0,0 +1,7 @@
|
||||
var ITERATIONS = 1000000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += i;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 5000;
|
||||
|
||||
var obj = {};
|
||||
for (var i = 0; i < 100; i++) {
|
||||
obj["k" + i] = i;
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
for (var k in obj) {
|
||||
sum += obj[k];
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 3000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
arr.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
for (var k of arr) {
|
||||
sum += k;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 1500;
|
||||
|
||||
var s = "";
|
||||
for (var i = 0; i < 50; i++) {
|
||||
s += "ab";
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
for (var k of s) {
|
||||
sum += k.charCodeAt(0);
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,13 @@
|
||||
var ITERATIONS = 3000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
arr.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
for (var k = 0; k < arr.length; k++) {
|
||||
sum += arr[k];
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 1000000;
|
||||
|
||||
var sum = 0;
|
||||
var i = 0;
|
||||
while (i < ITERATIONS) {
|
||||
sum += i;
|
||||
i++;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,15 @@
|
||||
var ITERATIONS = 3000;
|
||||
|
||||
var arr = [];
|
||||
for (var i = 0; i < 100; i++) {
|
||||
arr.push(i);
|
||||
}
|
||||
var sum = 0;
|
||||
for (var j = 0; j < ITERATIONS; j++) {
|
||||
var k = 0;
|
||||
while (k < arr.length) {
|
||||
sum += arr[k];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var m = new Map();
|
||||
for (var j = 0; j < 10; j++) {
|
||||
m.set(j, j * 2);
|
||||
}
|
||||
sum += m.get(5);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += Math.floor(i * 1.5);
|
||||
sum += Math.abs(i - 50000);
|
||||
sum += Math.max(i, 0);
|
||||
sum += Math.min(i, 999999);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 10000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var obj = {};
|
||||
for (var j = 0; j < 20; j++) {
|
||||
obj["k" + j] = j;
|
||||
}
|
||||
sum += Object.keys(obj).length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var obj = { a: 1, b: 2, c: 3, d: 4 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += obj.a + obj.b + obj.c + obj.d;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var obj = { a: 1, b: 2, c: 3 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var x = obj["a"];
|
||||
sum += x;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var obj = { a: 1, b: 2, c: 3 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
delete obj.a;
|
||||
obj.a = i;
|
||||
sum += obj.a;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var obj = {};
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
obj["key"] = i;
|
||||
sum += obj["key"];
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var obj = { nested: { deep: { value: i } } };
|
||||
sum += obj.nested.deep.value;
|
||||
}
|
||||
sum
|
||||
@@ -1,8 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var obj = { x: 0, y: 0 };
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var obj = { x: i, y: i * 2, nested: { a: 1, b: 2 } };
|
||||
obj.x = i;
|
||||
obj.y = i * 2;
|
||||
sum += obj.x + obj.y;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var s = new Set();
|
||||
for (var j = 0; j < 10; j++) {
|
||||
s.add(j);
|
||||
}
|
||||
sum += s.size;
|
||||
}
|
||||
sum
|
||||
@@ -1,7 +0,0 @@
|
||||
var ITERATIONS = 10000;
|
||||
|
||||
var s = "";
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
s += "a" + i;
|
||||
}
|
||||
s.length
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var s = "";
|
||||
for (var j = 0; j < 50; j++) {
|
||||
s += j;
|
||||
}
|
||||
sum += s.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var s = "Mixed CASE String with UPPER and lower parts";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += s.toUpperCase().length + s.toLowerCase().length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var s = "abc";
|
||||
sum += s.charAt(1) === "b";
|
||||
sum += s.charCodeAt(0);
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var a = "1";
|
||||
var b = "2";
|
||||
var c = "3";
|
||||
var d = a + b + c + a + b + c;
|
||||
sum += d.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var s = "The quick brown fox jumps over the lazy dog. 0123456789 abcdefghijklmnopqrstuvwxyz";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += s.indexOf("fox");
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var s = "hello world, hello engine, hello rust";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var r = s.replace("hello", "hi");
|
||||
sum += r.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var s = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var parts = s.split(",");
|
||||
sum += parts.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,9 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var s = "The quick brown fox jumps over the lazy dog. 0123456789 abcdefghijklmnopqrstuvwxyz";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var sub = s.substring(4, 15);
|
||||
sum += sub.length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var s = "hello world this is a string that gets trimmed ";
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += s.trim().length;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 50000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
try {
|
||||
sum += 1;
|
||||
} catch (e) {
|
||||
sum += 2;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,11 @@
|
||||
var ITERATIONS = 20000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
try {
|
||||
throw new Error("boom");
|
||||
} catch (e) {
|
||||
sum += e.message.length;
|
||||
}
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += typeof i;
|
||||
sum += typeof "str";
|
||||
sum += typeof null;
|
||||
sum += typeof {}.a;
|
||||
}
|
||||
sum
|
||||
@@ -0,0 +1,10 @@
|
||||
var ITERATIONS = 100000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
sum += -i;
|
||||
sum += ~i;
|
||||
sum += !i;
|
||||
sum += !(i > 0);
|
||||
}
|
||||
sum
|
||||
Reference in New Issue
Block a user