Benchmarks

A cross-runtime comparison run on real hardware. Every benchmark is shown, including the ones EkkoJS does not win. Higher is better.

HardwareAMD EPYC 7451, 48 threads, 128 GB RAMOSLinux x64Method3 seconds per benchmark, ops/s (higher is better)DateJune 2026
EkkoJS0.8.2
Node.js20.18.0
Bun1.3.13
Deno2.8.2

Overall standing

Scoring. In every one of the 35 benchmarks the four runtimes are ranked 1st to 4th by ops/s. A runtime’s overall score is the average of all those placements, not just its wins, so 1.00 would mean it finished first everywhere and 4.00 means last everywhere. Lower is better.

Because every placement counts equally, steady 2nd and 3rd finishes matter as much as wins, and a single benchmark where one runtime is 20× faster cannot skew the result. The wins figure beside each score counts outright 1st-place finishes only, shown for context.

#1
Bun1.3.13
1.44 avg rank26 wins / 34
#2
EkkoJS0.8.2
2.51 avg rank6 wins / 35
#3
Node.js20.18.0
2.91 avg rank1 wins / 34
#4
Deno2.8.2
3.03 avg rank2 wins / 34

A note on these numbers

These benchmarks run internally to help us track and improve EkkoJS performance. EkkoJS is a Technology Preview: we do not pretend to compete yet with Node.js, Bun, or Deno, which are production grade, stable, and have been battle-tested for years. The comparison is a compass for our own progress, not a claim of superiority.

1st2nd3rd4thn/a

Concurrency & Threads

BenchmarkEkkoJSNode.jsBunDeno
spawn-overheadthread start265/s23/s103/s30/s
parallel-10x5010 workers x 50912/sn/an/an/a
parallel-speedup4-way scaling x100314/s276/s287/s163/s
parallel-speedup-8x8-way scaling x100638/s532/s506/s202/s
fib35-parallel-4x26/s23/s36/s14/s
fib35-parallel-8x53/s44/s64/s18/s
fib35-sequential-4x8/s8/s13/s9/s

CPU & Math

BenchmarkEkkoJSNode.jsBunDeno
array-create-1k962,660/s633,411/s610,778/s679,830/s
object-create-simple11,584,900/s15,397,765/s22,479,209/s8,307,191/s
object-create-nested11,254,000/s14,925,688/s21,796,932/s7,854,535/s
primes-10k25,513/s11,604/s24,636/s26,454/s
primes-100k1,169/s989/s2,393/s1,181/s
math-random-1k121,965/s115,060/s314,895/s98,846/s
math-sqrt-loop38,131/s39,612/s310,859/s38,265/s
math-trig35,924/s28,738/s2,637,483/s36,333/s
sort-1k3,638/s4,045/s4,678/s4,038/s
sort-10k281/s280/s351/s299/s
fib-3092/s96/s143/s98/s
fib-358/s9/s13/s9/s

Strings & Regex

BenchmarkEkkoJSNode.jsBunDeno
string-concat-1k177,652/s160,307/s189,465/s191,661/s
string-repeat4,308,048/s4,606,959/s503,603/s3,935,450/s
string-template58,101/s51,791/s74,046/s55,821/s
regex-match-email5,610,098/s5,760,599/s20,654,308/s4,735,072/s
regex-replace1,240,005/s1,119,138/s1,450,250/s1,096,735/s
regex-test7,145,527/s7,791,865/s22,127,806/s5,838,074/s

JSON

BenchmarkEkkoJSNode.jsBunDeno
json-parse229,912/s197,112/s313,070/s219,075/s
json-stringify405,913/s247,623/s802,081/s642,883/s
json-roundtrip143,425/s105,738/s210,110/s161,093/s

Crypto

BenchmarkEkkoJSNode.jsBunDeno
sha256-hash375,761/s368,877/s1,359,972/s25,875/s
sha256-hash-short380,659/s375,938/s1,473,403/s29,608/s
random-uuid565,297/s4,694,497/s7,793,021/s3,702,664/s

File I/O

BenchmarkEkkoJSNode.jsBunDeno
file-read-binary-1mb5,084/s4,904/s4,045/s2,412/s
file-read-text-1mb722/s622/s3,979/s1,532/s
file-write-binary-1mb394/s412/s4,159/s388/s
file-write-text-1mb386/s390/s3,421/s360/s

Numbers vary with hardware and runtime versions. EkkoJS leads the concurrency and thread benchmarks and is competitive on CPU and I/O; Bun leads raw single-thread throughput. Reproduce withbash benchmarks/run.sh in the repository.