feat: 拆分 stress benchmark 到细粒度单热点测试并修复 bench 采样逻辑

This commit is contained in:
2026-08-13 14:27:20 +08:00
parent f3d411120e
commit 43a0c53ed7
65 changed files with 626 additions and 39 deletions
+10
View File
@@ -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
+12
View File
@@ -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
+11
View File
@@ -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
+11
View File
@@ -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
+10
View File
@@ -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]
+12
View File
@@ -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
+12
View File
@@ -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
+12
View File
@@ -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
+12
View File
@@ -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
+12
View File
@@ -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
+13
View File
@@ -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
+13
View File
@@ -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
+12
View File
@@ -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
-7
View File
@@ -1,7 +0,0 @@
var ITERATIONS = 200;
function sumTo(n) {
if (n <= 0) return 0;
return n + sumTo(n - 1);
}
sumTo(ITERATIONS)
+10
View File
@@ -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
+14
View File
@@ -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
+8
View File
@@ -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
+14
View File
@@ -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
+11
View File
@@ -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
+13
View File
@@ -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
+13
View File
@@ -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
+9
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
var ITERATIONS = 100000;
var sum = 0;
for (var i = 0; i < ITERATIONS; i++) {
sum += "42" + i;
}
sum
+11
View File
@@ -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
+7
View File
@@ -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
+8
View File
@@ -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
+7
View File
@@ -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
+11
View File
@@ -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
+8
View File
@@ -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
+11
View File
@@ -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
+9
View File
@@ -0,0 +1,9 @@
var ITERATIONS = 200000;
var sum = 0;
var i = 0;
do {
sum += i;
i++;
} while (i < ITERATIONS);
sum
+7
View File
@@ -0,0 +1,7 @@
var ITERATIONS = 1000000;
var sum = 0;
for (var i = 0; i < ITERATIONS; i++) {
sum += i;
}
sum
+13
View File
@@ -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
+13
View File
@@ -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
+13
View File
@@ -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
+13
View File
@@ -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
+9
View File
@@ -0,0 +1,9 @@
var ITERATIONS = 1000000;
var sum = 0;
var i = 0;
while (i < ITERATIONS) {
sum += i;
i++;
}
sum
+15
View File
@@ -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
+11
View File
@@ -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
+10
View File
@@ -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
+11
View File
@@ -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
+8
View File
@@ -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
+9
View File
@@ -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
+10
View File
@@ -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
+9
View File
@@ -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
+8
View File
@@ -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
+11
View File
@@ -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
-7
View File
@@ -1,7 +0,0 @@
var ITERATIONS = 10000;
var s = "";
for (var i = 0; i < ITERATIONS; i++) {
s += "a" + i;
}
s.length
+11
View File
@@ -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
+8
View File
@@ -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
+9
View File
@@ -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
+11
View File
@@ -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
+8
View File
@@ -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
+9
View File
@@ -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
+9
View File
@@ -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
+9
View File
@@ -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
+8
View File
@@ -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
+11
View File
@@ -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
+11
View File
@@ -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
+10
View File
@@ -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
+10
View File
@@ -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