Skip to content

Commit f00d8db

Browse files
committed
chore(NODE-6721): migrate singlebench tests
1 parent 7f11fa5 commit f00d8db

File tree

1 file changed

+46
-0
lines changed
  • test/benchmarks/driver_bench/src/suites/single_bench

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import assert from 'node:assert/strict';
2+
3+
const findPrimesBelow = 290_000;
4+
const expectedPrimes = 25_224;
5+
6+
// should never change
7+
export const taskSize = 1.00896;
8+
9+
// expected primes * 4 bytes (int32) in MB
10+
assert.equal(taskSize, expectedPrimes * 4 * 10e-6);
11+
12+
/** @see https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes */
13+
function sieveOfEratosthenes(n: number) {
14+
// Create a boolean array "prime[0..n]" and initialize
15+
// all entries as true. A value in prime[i] will
16+
// become false if i is Not a prime
17+
const prime = Array.from({ length: n + 1 }, () => true);
18+
19+
// We know 0 and 1 are not prime
20+
prime[0] = false;
21+
prime[1] = false;
22+
23+
for (let p = 2; p * p <= n; p++) {
24+
// If prime[p] is not changed, then it is a prime
25+
if (prime[p] === true) {
26+
// Update all multiples of p as false
27+
for (let i = p * p; i <= n; i += p) {
28+
prime[i] = false;
29+
}
30+
}
31+
}
32+
33+
// Collecting all prime numbers
34+
const primes = [];
35+
for (let i = 2; i <= n; i++) {
36+
if (prime[i] === true) {
37+
primes.push(i);
38+
}
39+
}
40+
41+
return primes;
42+
}
43+
44+
export async function run() {
45+
assert.equal(sieveOfEratosthenes(findPrimesBelow).length, expectedPrimes);
46+
}

0 commit comments

Comments
 (0)