68 lines
1.4 KiB
JavaScript
68 lines
1.4 KiB
JavaScript
// bench_arith.js — arithmetic and number crunching benchmark (QuickJS)
|
|
|
|
const iterations = 2000000;
|
|
|
|
function bench_int_sum() {
|
|
let s = 0;
|
|
for (let i = 0; i < iterations; i++) {
|
|
s = s + i;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function bench_int_mul_mod() {
|
|
let s = 0;
|
|
for (let i = 1; i < iterations; i++) {
|
|
s = s + (i * 7 % 1000);
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function bench_float_arith() {
|
|
let s = 0.5;
|
|
for (let i = 1; i < iterations; i++) {
|
|
s = s + 1.0 / i;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function bench_branch() {
|
|
let fizz = 0, buzz = 0, fizzbuzz = 0;
|
|
for (let i = 1; i <= iterations; i++) {
|
|
if (i % 15 === 0) {
|
|
fizzbuzz = fizzbuzz + 1;
|
|
} else if (i % 3 === 0) {
|
|
fizz = fizz + 1;
|
|
} else if (i % 5 === 0) {
|
|
buzz = buzz + 1;
|
|
}
|
|
}
|
|
return fizz + buzz + fizzbuzz;
|
|
}
|
|
|
|
function bench_nested() {
|
|
let s = 0;
|
|
const outer = 5000, inner = 5000;
|
|
for (let i = 0; i < outer; i++) {
|
|
for (let j = 0; j < inner; j++) {
|
|
s = s + 1;
|
|
}
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function run(name, fn) {
|
|
const start = performance.now();
|
|
const result = fn();
|
|
const elapsed = performance.now() - start;
|
|
console.log(` ${name}: ${elapsed.toFixed(2)} ms (result: ${result})`);
|
|
}
|
|
|
|
console.log("=== Arithmetic Benchmark ===");
|
|
console.log(` iterations: ${iterations}`);
|
|
run("int_sum ", bench_int_sum);
|
|
run("int_mul_mod ", bench_int_mul_mod);
|
|
run("float_arith ", bench_float_arith);
|
|
run("branch ", bench_branch);
|
|
run("nested_loop ", bench_nested);
|