View on GitHub

Deno-vs-Node-Performance

Performance comparison of Deno and Node.js on over 30 tests

Deno vs Node.js performance benchmarking

Introduction

Deno is a simple, modern, and secure runtime for JavaScript and TypeScript. Deno is sandboxed and supports Typescript out of the box. Deno is built over Google’s V8 engine and uses Rust. The first major release of Deno was in May 2020.

Node.js is a very popular battle-tested runtime for Javascript. Node.js has been around for more than 11 years. Node.js is built over the same Google’s V8 engine, but uses C++.

Functionally, Deno is same as Node.js.

Until now, whenever there was a need for a JS based server runtime, there was only Node.js. However, now onwards, there would always be two options: Node.js or Deno?

It is very unlikely that existing Node.js apps will be ported to Deno. That’s too much of work, and there won’t be any significant gain. But it is very likely that people could consider Deno for newer apps.

If both are functionally same, what could the primary factors to consider Deno over Node.js?

Reliability would be discussed separately. The focus of this page is performance.

So, is Deno ready for prime time? Can it perform as good as or better than Node.js? If Deno can’t perform as good as Node.js, it can never become a major challenge to the Node.js empire.

The purpose of this repository/page is to continually run and report on tests that compares Deno’s performance against Node.js. The plan is to keep this repository/page updated as soon as there are new releases on either Deno or Node.js. The frequency would likely be weekly.

Versions

Deno: 1.9.1

Node.js: 16.0.0

Environment

MacBook Pro 1.4Ghz Quad core i5 with 8G memory

List of Tests

Test Description
Hello world This one is a very simple hello world program. It responds to a GET request with a JSON containing a string Hello World!
Hello world with frameworks: oak and express Hello world program using the popular frameworks: Oak/Deno, Express/Node.js
Echo name over HTTPS A simple echo name program that runs over HTTPS
Five hundred random integers Generate five hundred random integers and return them in a JSON array
Five hundred random 16 character hex string Generate five hundred random 16 character hex strings and return them in a JSON array
One hundred V1 UUIDs Generate one hundred V1 UUIDs and return them in a JSON array
One hundred V4 UUIDs Generate one hundred V4 UUIDs and return them in a JSON array
One hundred V5 UUIDs Generate one hundred V5 UUIDs and return them in a JSON array
Parse five hundred strings Parse five hundred strings containing integers and return parsed integers in a JSON array
Calculate mean of 500 numbers Calculate mean of 500 numbers and return it in response
Calculate median of 500 numbers Calculate median of 500 numbers and return it in response
Write 100 console logs Write 100 lines on the console, and return number of lines in response.
A simple API proxy Receive request, increment, and send it to a faux server. Receive response, increment, and send it back.
Multipart form-data with fields Receive multipart/form-data and return parsed fields in JSON.
A simple message exchange over UDP Receive a message over UDP, and echo it back.
A simple message exchange over WebSocket Receive a message over WebSocket, and echo it back.
Hello world: Native vs Oak Hello world program: Deno native vs Deno oak
Echo name: hyper vs node native Echo name: Deno hyper vs Node native

Tests and Results

Hello world

This one is a very simple hello world program. It responds to a GET request with a JSON containing a string Hello World!

Reading Node.js Deno  
TimeTakenMS 1076 1119
ReqPerSec 929 893
Min. 0.21 0.24
1st Qu. 0.25 0.28
Median 0.26 0.29
Mean 0.28 0.32
3rd Qu. 0.28 0.31
Max. 2.05 2.83

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.21 0.24
10% 0.24 0.27
20% 0.24 0.28
30% 0.25 0.28
40% 0.26 0.29
50% 0.26 0.29
60% 0.27 0.3
70% 0.27 0.3
80% 0.28 0.32
90% 0.29 0.34
100% 2.05 2.83

Chart of Deno hello_world Chart of Node.js hello_world

Deno is 4.00% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 4202 4121
ReqPerSec 2379 2426
Min. 0.23 0.24
1st Qu. 0.58 0.93
Median 0.87 1.15
Mean 1.03 1.18
3rd Qu. 1.32 1.34
Max. 10.88 8.06

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.23 0.24
10% 0.36 0.74
20% 0.51 0.88
30% 0.65 0.98
40% 0.76 1.07
50% 0.87 1.15
60% 1 1.21
70% 1.2 1.29
80% 1.49 1.41
90% 1.76 1.63
100% 10.88 8.06

Chart of Deno hello_world Chart of Node.js hello_world

Deno is 1.93% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 10388 10544
ReqPerSec 2406 2371
Min. 0.22 0.3
1st Qu. 2.11 2.73
Median 2.64 3.21
Mean 2.84 3.22
3rd Qu. 3.12 3.58
Max. 158.24 25.1

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.22 0.3
10% 1.42 2.15
20% 1.92 2.58
30% 2.28 2.84
40% 2.5 3.06
50% 2.64 3.21
60% 2.79 3.34
70% 2.98 3.48
80% 3.36 3.67
90% 4.41 4.01
100% 158.24 25.1

Chart of Deno hello_world Chart of Node.js hello_world

Deno is 1.50% slower than Node.js.

Hello world with frameworks: oak and express

Hello world program using the popular frameworks: Oak/Deno, Express/Node.js

Reading Node.js Deno  
TimeTakenMS 1354 1418
ReqPerSec 738 705
Min. 0.38 0.42
1st Qu. 0.43 0.47
Median 0.44 0.49
Mean 0.47 0.52
3rd Qu. 0.46 0.51
Max. 2.9 2

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.38 0.42
10% 0.41 0.45
20% 0.42 0.46
30% 0.43 0.47
40% 0.44 0.48
50% 0.44 0.49
60% 0.45 0.5
70% 0.46 0.51
80% 0.47 0.52
90% 0.5 0.55
100% 2.9 2

Chart of Deno hello_world_oak_exp Chart of Node.js hello_world_oak_exp

Deno is 4.73% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5962 5532
ReqPerSec 1677 1807
Min. 0.35 0.46
1st Qu. 1.58 1.79
Median 1.79 1.92
Mean 2.03 2.03
3rd Qu. 2.25 2.32
Max. 9.2 5.45

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.35 0.46
10% 1 1.64
20% 1.5 1.76
30% 1.63 1.82
40% 1.71 1.86
50% 1.79 1.92
60% 1.88 2.03
70% 2.05 2.21
80% 2.63 2.39
90% 3.52 2.57
100% 9.2 5.45

Chart of Deno hello_world_oak_exp Chart of Node.js hello_world_oak_exp

Deno is 7.21% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 14353 14678
ReqPerSec 1741 1703
Min. 0.35 1.09
1st Qu. 4.47 4.96
Median 4.79 5.75
Mean 5.09 5.91
3rd Qu. 5.55 6.66
Max. 19.49 33.44

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.35 1.09
10% 3.65 4.71
20% 4.36 4.87
30% 4.56 5.07
40% 4.68 5.34
50% 4.79 5.75
60% 4.95 6.43
70% 5.3 6.59
80% 5.79 6.75
90% 6.94 7.09
100% 19.49 33.44

Chart of Deno hello_world_oak_exp Chart of Node.js hello_world_oak_exp

Deno is 2.26% slower than Node.js.

Echo name over HTTPS

A simple echo name program that runs over HTTPS

Reading Node.js Deno  
TimeTakenMS 1230 1241
ReqPerSec 813 805
Min. 0.29 0.32
1st Qu. 0.33 0.36
Median 0.34 0.37
Mean 0.37 0.4
3rd Qu. 0.36 0.39
Max. 2.72 2.01

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.29 0.32
10% 0.32 0.35
20% 0.33 0.36
30% 0.33 0.36
40% 0.34 0.37
50% 0.34 0.37
60% 0.35 0.38
70% 0.36 0.39
80% 0.37 0.4
90% 0.39 0.43
100% 2.72 2.01

Chart of Deno hello_name_https Chart of Node.js hello_name_https

Deno is 0.89% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 4646 4526
ReqPerSec 2152 2209
Min. 0.32 0.35
1st Qu. 0.89 1.08
Median 1.14 1.42
Mean 1.36 1.44
3rd Qu. 1.67 1.67
Max. 11.97 12.68

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.32 0.35
10% 0.6 0.81
20% 0.81 0.98
30% 0.95 1.16
40% 1.05 1.3
50% 1.14 1.42
60% 1.28 1.51
70% 1.5 1.6
80% 1.94 1.74
90% 2.31 2
100% 11.97 12.68

Chart of Deno hello_name_https Chart of Node.js hello_name_https

Deno is 2.58% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 11619 11675
ReqPerSec 2151 2141
Min. 0.33 0.46
1st Qu. 2.92 3.16
Median 3.53 3.92
Mean 3.74 3.87
3rd Qu. 4.13 4.33
Max. 21.68 23.37

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.33 0.46
10% 1.98 2.43
20% 2.57 2.89
30% 3.16 3.36
40% 3.38 3.67
50% 3.53 3.92
60% 3.7 4.08
70% 3.95 4.23
80% 4.36 4.47
90% 5.51 4.92
100% 21.68 23.37

Chart of Deno hello_name_https Chart of Node.js hello_name_https

Deno is 0.48% slower than Node.js.

Five hundred random integers

Generate five hundred random integers and return them in a JSON array

Reading Node.js Deno  
TimeTakenMS 1243 1253
ReqPerSec 804 798
Min. 0.28 0.32
1st Qu. 0.33 0.36
Median 0.34 0.37
Mean 0.37 0.39
3rd Qu. 0.36 0.39
Max. 2.51 1.99

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.28 0.32
10% 0.31 0.34
20% 0.32 0.35
30% 0.33 0.36
40% 0.34 0.36
50% 0.34 0.37
60% 0.35 0.38
70% 0.35 0.38
80% 0.36 0.39
90% 0.41 0.43
100% 2.51 1.99

Chart of Deno random_int Chart of Node.js random_int

Deno is 0.80% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 4602 4555
ReqPerSec 2172 2195
Min. 0.3 0.34
1st Qu. 0.87 0.95
Median 1.13 1.41
Mean 1.34 1.41
3rd Qu. 1.75 1.67
Max. 12.52 10.84

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.3 0.34
10% 0.58 0.79
20% 0.78 0.9
30% 0.93 1.04
40% 1.01 1.25
50% 1.13 1.41
60% 1.29 1.54
70% 1.53 1.62
80% 1.98 1.74
90% 2.26 1.96
100% 12.52 10.84

Chart of Deno random_int Chart of Node.js random_int

Deno is 1.02% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 11745 11911
ReqPerSec 2128 2098
Min. 0.3 0.35
1st Qu. 2.93 3.54
Median 3.45 4.29
Mean 3.74 4.14
3rd Qu. 4.04 4.62
Max. 21.64 22.41

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.3 0.35
10% 1.87 2.37
20% 2.65 3.12
30% 3.14 3.88
40% 3.32 4.14
50% 3.45 4.29
60% 3.61 4.41
70% 3.85 4.54
80% 4.4 4.74
90% 6.29 5.12
100% 21.64 22.41

Chart of Deno random_int Chart of Node.js random_int

Deno is 1.41% slower than Node.js.

Five hundred random 16 character hex string

Generate five hundred random 16 character hex strings and return them in a JSON array

Reading Node.js Deno  
TimeTakenMS 1999 2024
ReqPerSec 500 494
Min. 0.74 0.74
1st Qu. 0.78 0.78
Median 0.79 0.8
Mean 0.83 0.86
3rd Qu. 0.82 0.86
Max. 2.6 5.07

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.74 0.74
10% 0.76 0.77
20% 0.77 0.78
30% 0.78 0.78
40% 0.79 0.79
50% 0.79 0.8
60% 0.8 0.81
70% 0.81 0.83
80% 0.83 0.94
90% 0.98 1
100% 2.6 5.07

Chart of Deno random_hex Chart of Node.js random_hex

Deno is 1.25% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 10932 11303
ReqPerSec 914 884
Min. 0.77 0.83
1st Qu. 4.72 3.75
Median 4.89 4.63
Mean 4.66 4.4
3rd Qu. 5.14 4.99
Max. 14.74 7.94

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.77 0.83
10% 1.09 3.03
20% 4.51 3.56
30% 4.75 4.03
40% 4.83 4.47
50% 4.89 4.63
60% 4.98 4.76
70% 5.08 4.89
80% 5.19 5.08
90% 5.34 5.39
100% 14.74 7.94

Chart of Deno random_hex Chart of Node.js random_hex

Deno is 3.39% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 26834 28727
ReqPerSec 931 870
Min. 0.77 2.4
1st Qu. 13.2 10
Median 13.42 10.77
Mean 13.19 10.88
3rd Qu. 13.6 11.67
Max. 51.71 16.27

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.77 2.4
10% 12.78 9.45
20% 13.11 9.84
30% 13.27 10.16
40% 13.36 10.46
50% 13.42 10.77
60% 13.49 11.13
70% 13.55 11.48
80% 13.66 11.92
90% 13.98 12.54
100% 51.71 16.27

Chart of Deno random_hex Chart of Node.js random_hex

Deno is 7.05% slower than Node.js.

One hundred V1 UUIDs

Generate one hundred V1 UUIDs and return them in a JSON array

Reading Node.js Deno  
TimeTakenMS 1349 1494
ReqPerSec 741 669
Min. 0.34 0.46
1st Qu. 0.39 0.5
Median 0.4 0.52
Mean 0.43 0.55
3rd Qu. 0.42 0.55
Max. 2.49 2.14

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.34 0.46
10% 0.37 0.48
20% 0.38 0.49
30% 0.39 0.5
40% 0.4 0.51
50% 0.4 0.52
60% 0.41 0.53
70% 0.42 0.54
80% 0.44 0.58
90% 0.51 0.68
100% 2.49 2.14

Chart of Deno uuid_v1 Chart of Node.js uuid_v1

Deno is 10.75% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5216 6469
ReqPerSec 1917 1545
Min. 0.38 0.56
1st Qu. 1.06 2.46
Median 1.47 2.76
Mean 1.64 2.81
3rd Qu. 2.04 3.21
Max. 12.33 16.8

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.38 0.56
10% 0.78 2.28
20% 0.99 2.42
30% 1.16 2.49
40% 1.33 2.56
50% 1.47 2.76
60% 1.64 2.96
70% 1.88 3.16
80% 2.18 3.25
90% 2.76 3.44
100% 12.33 16.8

Chart of Deno uuid_v1 Chart of Node.js uuid_v1

Deno is 24.02% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 12682 16789
ReqPerSec 1971 1489
Min. 0.37 0.51
1st Qu. 2.93 6.25
Median 4.09 7.22
Mean 4.15 7.33
3rd Qu. 4.74 8.29
Max. 18.86 28.82

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.37 0.51
10% 2.13 5.91
20% 2.71 6.15
30% 3.1 6.35
40% 3.62 6.66
50% 4.09 7.22
60% 4.33 7.93
70% 4.57 8.18
80% 5.01 8.41
90% 6.27 8.76
100% 18.86 28.82

Chart of Deno uuid_v1 Chart of Node.js uuid_v1

Deno is 32.38% slower than Node.js.

One hundred V4 UUIDs

Generate one hundred V4 UUIDs and return them in a JSON array

Reading Node.js Deno  
TimeTakenMS 1387 1749
ReqPerSec 720 571
Min. 0.37 0.62
1st Qu. 0.41 0.65
Median 0.43 0.68
Mean 0.46 0.72
3rd Qu. 0.45 0.72
Max. 2.73 2.34

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.37 0.62
10% 0.4 0.64
20% 0.41 0.65
30% 0.41 0.66
40% 0.42 0.67
50% 0.43 0.68
60% 0.43 0.69
70% 0.45 0.7
80% 0.46 0.79
90% 0.52 0.88
100% 2.73 2.34

Chart of Deno uuid_v4 Chart of Node.js uuid_v4

Deno is 26.10% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5791 8810
ReqPerSec 1726 1135
Min. 0.41 0.76
1st Qu. 1.41 4.02
Median 1.77 4.24
Mean 2.03 4.35
3rd Qu. 2.54 4.63
Max. 9.57 7.3

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.41 0.76
10% 1.13 3.9
20% 1.32 3.98
30% 1.49 4.07
40% 1.64 4.16
50% 1.77 4.24
60% 1.94 4.32
70% 2.27 4.53
80% 2.82 4.77
90% 3.47 5.08
100% 9.57 7.3

Chart of Deno uuid_v4 Chart of Node.js uuid_v4

Deno is 52.13% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 13661 22670
ReqPerSec 1830 1102
Min. 0.38 1.49
1st Qu. 3.9 10.19
Median 4.62 10.79
Mean 4.92 11.05
3rd Qu. 5.38 11.9
Max. 18.77 18.44

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.38 1.49
10% 3.48 9.87
20% 3.82 10.11
30% 3.99 10.27
40% 4.29 10.52
50% 4.62 10.79
60% 4.92 11.16
70% 5.21 11.65
80% 5.62 12.11
90% 7.49 12.69
100% 18.77 18.44

Chart of Deno uuid_v4 Chart of Node.js uuid_v4

Deno is 65.95% slower than Node.js.

One hundred V5 UUIDs

Generate one hundred V5 UUIDs and return them in a JSON array

Reading Node.js Deno  
TimeTakenMS 2060 2618
ReqPerSec 485 381
Min. 0.7 1.15
1st Qu. 0.76 1.19
Median 0.78 1.22
Mean 0.89 1.28
3rd Qu. 0.81 1.35
Max. 2.3 5.07

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.7 1.15
10% 0.74 1.18
20% 0.75 1.19
30% 0.76 1.2
40% 0.77 1.21
50% 0.78 1.22
60% 0.79 1.23
70% 0.8 1.27
80% 0.84 1.39
90% 1.41 1.45
100% 2.3 5.07

Chart of Deno uuid_v5 Chart of Node.js uuid_v5

Deno is 27.09% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 13192 17121
ReqPerSec 758 584
Min. 0.73 2
1st Qu. 4.6 9.36
Median 4.77 9.64
Mean 6.32 9.68
3rd Qu. 8.54 10
Max. 20.33 15.39

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.73 2
10% 2.23 9.12
20% 4.57 9.31
30% 4.63 9.4
40% 4.68 9.52
50% 4.77 9.64
60% 4.96 9.77
70% 7.88 9.92
80% 9.01 10.1
90% 12.13 10.36
100% 20.33 15.39

Chart of Deno uuid_v5 Chart of Node.js uuid_v5

Deno is 29.78% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 31421 43478
ReqPerSec 795 575
Min. 0.73 2.13
1st Qu. 12.43 24.24
Median 16.42 24.97
Mean 16.22 24.96
3rd Qu. 19.25 25.81
Max. 44.68 31.04

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.73 2.13
10% 11.94 23.65
20% 12.27 24.06
30% 12.59 24.41
40% 13.01 24.69
50% 16.42 24.97
60% 17.76 25.26
70% 18.76 25.62
80% 19.74 26.06
90% 22.09 26.73
100% 44.68 31.04

Chart of Deno uuid_v5 Chart of Node.js uuid_v5

Deno is 38.37% slower than Node.js.

Parse five hundred strings

Parse five hundred strings containing integers and return parsed integers in a JSON array

Reading Node.js Deno  
TimeTakenMS 1495 1522
ReqPerSec 668 657
Min. 0.44 0.47
1st Qu. 0.48 0.51
Median 0.5 0.53
Mean 0.54 0.57
3rd Qu. 0.53 0.56
Max. 3.26 2.92

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.44 0.47
10% 0.47 0.49
20% 0.48 0.5
30% 0.48 0.51
40% 0.49 0.52
50% 0.5 0.53
60% 0.5 0.54
70% 0.51 0.55
80% 0.55 0.59
90% 0.68 0.71
100% 3.26 2.92

Chart of Deno parse_int Chart of Node.js parse_int

Deno is 1.81% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5602 5680
ReqPerSec 1785 1760
Min. 0.49 0.51
1st Qu. 1.29 1.6
Median 1.62 2.24
Mean 1.96 2.17
3rd Qu. 2.65 2.55
Max. 13.39 13

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.49 0.51
10% 0.94 1.22
20% 1.21 1.43
30% 1.35 1.78
40% 1.47 2.04
50% 1.62 2.24
60% 1.88 2.38
70% 2.34 2.48
80% 2.84 2.63
90% 3.22 2.9
100% 13.39 13

Chart of Deno parse_int Chart of Node.js parse_int

Deno is 1.39% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 13819 14477
ReqPerSec 1809 1726
Min. 0.48 0.59
1st Qu. 4.25 5.27
Median 4.64 6.03
Mean 5.08 5.8
3rd Qu. 5.25 6.41
Max. 21.14 25.03

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.48 0.59
10% 3 3.38
20% 4.05 4.81
30% 4.36 5.57
40% 4.51 5.84
50% 4.64 6.03
60% 4.8 6.17
70% 5.05 6.32
80% 5.7 6.52
90% 8.63 7.01
100% 21.14 25.03

Chart of Deno parse_int Chart of Node.js parse_int

Deno is 4.76% slower than Node.js.

Calculate mean of 500 numbers

Calculate mean of 500 numbers and return it in response

Reading Node.js Deno  
TimeTakenMS 1354 1358
ReqPerSec 738 736
Min. 0.36 0.39
1st Qu. 0.4 0.43
Median 0.42 0.45
Mean 0.45 0.48
3rd Qu. 0.44 0.47
Max. 1.92 2.41

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.36 0.39
10% 0.39 0.41
20% 0.4 0.43
30% 0.41 0.43
40% 0.41 0.44
50% 0.42 0.45
60% 0.43 0.45
70% 0.44 0.46
80% 0.45 0.48
90% 0.58 0.6
100% 1.92 2.41

Chart of Deno mean Chart of Node.js mean

Deno is 0.30% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5083 4906
ReqPerSec 1967 2038
Min. 0.39 0.4
1st Qu. 1.09 1.38
Median 1.45 1.68
Mean 1.66 1.69
3rd Qu. 2.21 1.91
Max. 12.46 9.55

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.39 0.4
10% 0.8 1.13
20% 1.02 1.31
30% 1.14 1.45
40% 1.27 1.58
50% 1.45 1.68
60% 1.7 1.76
70% 2.06 1.85
80% 2.34 1.98
90% 2.67 2.22
100% 12.46 9.55

Chart of Deno mean Chart of Node.js mean

Deno is 3.48% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 12480 12652
ReqPerSec 2003 1975
Min. 0.41 0.46
1st Qu. 3.37 3.97
Median 3.73 4.56
Mean 4.14 4.56
3rd Qu. 4.35 5
Max. 24.1 22.86

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.41 0.46
10% 2.41 3.17
20% 3.15 3.79
30% 3.48 4.13
40% 3.62 4.38
50% 3.73 4.56
60% 3.88 4.73
70% 4.12 4.9
80% 4.78 5.14
90% 6.88 5.58
100% 24.1 22.86

Chart of Deno mean Chart of Node.js mean

Deno is 1.38% slower than Node.js.

Calculate median of 500 numbers

Calculate median of 500 numbers and return it in response

Reading Node.js Deno  
TimeTakenMS 1482 1479
ReqPerSec 674 676
Min. 0.45 0.47
1st Qu. 0.49 0.51
Median 0.5 0.52
Mean 0.54 0.55
3rd Qu. 0.52 0.54
Max. 2 2.35

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.45 0.47
10% 0.47 0.5
20% 0.48 0.51
30% 0.49 0.51
40% 0.5 0.52
50% 0.5 0.52
60% 0.51 0.53
70% 0.52 0.54
80% 0.53 0.55
90% 0.67 0.67
100% 2 2.35

Chart of Deno median Chart of Node.js median

Deno is 0.20% faster than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5575 5640
ReqPerSec 1793 1773
Min. 0.51 0.56
1st Qu. 1.36 1.66
Median 1.78 2.21
Mean 2.01 2.19
3rd Qu. 2.5 2.64
Max. 13.94 11.15

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.51 0.56
10% 1.06 1.34
20% 1.25 1.56
30% 1.47 1.75
40% 1.65 1.93
50% 1.78 2.21
60% 1.97 2.43
70% 2.31 2.58
80% 2.66 2.7
90% 3.41 2.9
100% 13.94 11.15

Chart of Deno median Chart of Node.js median

Deno is 1.17% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 14187 15005
ReqPerSec 1762 1666
Min. 0.48 0.58
1st Qu. 3.98 4.76
Median 5.04 6.76
Mean 5.18 6.26
3rd Qu. 5.6 7.2
Max. 20.09 31.8

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.48 0.58
10% 2.95 4.09
20% 3.73 4.48
30% 4.24 5.21
40% 4.79 6.34
50% 5.04 6.76
60% 5.22 6.94
70% 5.44 7.1
80% 5.85 7.32
90% 7.7 7.76
100% 20.09 31.8

Chart of Deno median Chart of Node.js median

Deno is 5.77% slower than Node.js.

Write 100 console logs

Write 100 lines on the console, and return number of lines in response.

Reading Node.js Deno  
TimeTakenMS 1615 1442
ReqPerSec 619 693
Min. 0.54 0.45
1st Qu. 0.56 0.49
Median 0.58 0.51
Mean 0.61 0.53
3rd Qu. 0.6 0.53
Max. 2 2.25

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.54 0.45
10% 0.55 0.48
20% 0.56 0.49
30% 0.57 0.49
40% 0.57 0.5
50% 0.58 0.51
60% 0.58 0.51
70% 0.59 0.52
80% 0.61 0.53
90% 0.69 0.58
100% 2 2.25

Chart of Deno console_log Chart of Node.js console_log

Deno is 10.71% faster than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 8842 6847
ReqPerSec 1130 1460
Min. 0.6 0.56
1st Qu. 3.61 2.79
Median 3.84 2.96
Mean 3.81 3.08
3rd Qu. 4.07 3.49
Max. 10.69 7.73

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.6 0.56
10% 1.67 2.56
20% 3.48 2.73
30% 3.68 2.83
40% 3.77 2.9
50% 3.84 2.96
60% 3.91 3.12
70% 4.01 3.37
80% 4.14 3.57
90% 4.46 3.74
100% 10.69 7.73

Chart of Deno console_log Chart of Node.js console_log

Deno is 22.56% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 21745 17849
ReqPerSec 1149 1400
Min. 0.57 0.74
1st Qu. 9.74 7.18
Median 10.06 7.87
Mean 10.04 8.15
3rd Qu. 10.44 9.31
Max. 33.87 23.12

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.57 0.74
10% 9.32 6.87
20% 9.66 7.1
30% 9.81 7.29
40% 9.94 7.51
50% 10.06 7.87
60% 10.19 8.35
70% 10.33 9.14
80% 10.57 9.44
90% 11.4 9.78
100% 33.87 23.12

Chart of Deno console_log Chart of Node.js console_log

Deno is 17.92% faster than Node.js.

Multipart form-data with fields

Receive multipart/form-data and return parsed fields in JSON.

Reading Node.js Deno  
TimeTakenMS 1433 11391
ReqPerSec 697 87
Min. 0.39 5.42
1st Qu. 0.43 5.69
Median 0.45 5.94
Mean 0.49 7.14
3rd Qu. 0.48 9.08
Max. 3.01 12.69

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.39 5.42
10% 0.42 5.62
20% 0.43 5.66
30% 0.44 5.72
40% 0.44 5.8
50% 0.45 5.94
60% 0.46 6.19
70% 0.47 7.6
80% 0.49 9.3
90% 0.55 10.45
100% 3.01 12.69

Chart of Deno form_data_fields Chart of Node.js form_data_fields

Deno is 694.91% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 5757 113220
ReqPerSec 1737 88
Min. 0.35 12.07
1st Qu. 1.11 73.26
Median 1.46 74.94
Mean 1.72 74.9
3rd Qu. 2.22 76.55
Max. 12.82 85.66

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.35 12.07
10% 0.83 71.09
20% 1.06 72.81
30% 1.18 73.66
40% 1.31 74.33
50% 1.46 74.94
60% 1.65 75.45
70% 2 76.13
80% 2.39 77.07
90% 2.82 78.81
100% 12.82 85.66

Chart of Deno form_data_fields Chart of Node.js form_data_fields

Deno is 1866.65% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 12819 281227
ReqPerSec 1950 88
Min. 0.35 17.59
1st Qu. 3.03 178.14
Median 3.74 180.91
Mean 4.03 180.75
3rd Qu. 4.48 183.82
Max. 21.04 198.18

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.35 17.59
10% 1.99 175.42
20% 2.75 177.3
30% 3.3 178.9
40% 3.58 179.96
50% 3.74 180.91
60% 3.93 181.88
70% 4.22 183.03
80% 4.81 184.65
90% 6.62 186.84
100% 21.04 198.18

Chart of Deno form_data_fields Chart of Node.js form_data_fields

Deno is 2093.83% slower than Node.js.

A simple message exchange over UDP

Receive a message over UDP, and echo it back.

Reading Node.js Deno  
TimeTakenMS 756 782
ReqPerSec 1322 1278
Min. 0.15 0.17
1st Qu. 0.18 0.19
Median 0.19 0.2
Mean 0.19 0.21
3rd Qu. 0.2 0.21
Max. 1.87 1.94

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.15 0.17
10% 0.17 0.18
20% 0.17 0.19
30% 0.18 0.19
40% 0.18 0.2
50% 0.19 0.2
60% 0.19 0.2
70% 0.19 0.21
80% 0.2 0.21
90% 0.2 0.22
100% 1.87 1.94

Chart of Deno udp_server Chart of Node.js udp_server

Deno is 3.44% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 3550 3531
ReqPerSec 2816 2832
Min. 0.14 0.23
1st Qu. 0.67 0.79
Median 1.03 0.97
Mean 1.05 1.01
3rd Qu. 1.4 1.19
Max. 27.55 3.62

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.14 0.23
10% 0.27 0.64
20% 0.58 0.75
30% 0.75 0.83
40% 0.9 0.9
50% 1.03 0.97
60% 1.17 1.04
70% 1.33 1.13
80% 1.48 1.26
90% 1.69 1.45
100% 27.55 3.62

Chart of Deno udp_server Chart of Node.js udp_server

Deno is 0.54% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 8643 8896
ReqPerSec 2892 2810
Min. 0.2 0.29
1st Qu. 1.38 1.64
Median 1.79 2.13
Mean 2 2.19
3rd Qu. 2.36 2.61
Max. 83.49 116.04

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.2 0.29
10% 1.22 1.32
20% 1.32 1.54
30% 1.44 1.75
40% 1.61 1.95
50% 1.79 2.13
60% 1.97 2.35
70% 2.23 2.53
80% 2.53 2.7
90% 3.15 2.95
100% 83.49 116.04

Chart of Deno udp_server Chart of Node.js udp_server

Deno is 2.93% slower than Node.js.

A simple message exchange over WebSocket

Receive a message over WebSocket, and echo it back.

Reading Node.js Deno  
TimeTakenMS 2187 2213
ReqPerSec 457 451
Min. 0.87 0.93
1st Qu. 0.96 1
Median 1.02 1.04
Mean 1.09 1.1
3rd Qu. 1.1 1.12
Max. 3.91 5.9

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.87 0.93
10% 0.93 0.97
20% 0.95 0.99
30% 0.97 1.01
40% 1 1.02
50% 1.02 1.04
60% 1.05 1.06
70% 1.08 1.09
80% 1.13 1.15
90% 1.29 1.25
100% 3.91 5.9

Chart of Deno ws_server Chart of Node.js ws_server

Deno is 1.19% slower than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 10000

Reading Node.js Deno  
TimeTakenMS 8607 9387
ReqPerSec 1161 1065
Min. 0.89 1.04
1st Qu. 3.25 4.16
Median 4.12 4.68
Mean 4.1 4.84
3rd Qu. 4.74 5.39
Max. 17.76 21.06

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.89 1.04
10% 2.52 3.94
20% 3.02 4.1
30% 3.48 4.21
40% 3.83 4.37
50% 4.12 4.68
60% 4.37 5.09
70% 4.61 5.3
80% 4.9 5.48
90% 5.4 5.73
100% 17.76 21.06

Chart of Deno ws_server Chart of Node.js ws_server

Deno is 9.06% slower than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 25000

Reading Node.js Deno  
TimeTakenMS 21266 24295
ReqPerSec 1175 1029
Min. 0.87 1.12
1st Qu. 7.89 10.2
Median 10.31 11.43
Mean 10.26 12.43
3rd Qu. 11.89 13.98
Max. 47.45 68.06

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.87 1.12
10% 5.4 9.69
20% 7.15 10.08
30% 8.61 10.32
40% 9.63 10.64
50% 10.31 11.43
60% 10.86 12.93
70% 11.5 13.59
80% 12.39 14.4
90% 14.58 15.89
100% 47.45 68.06

Chart of Deno ws_server Chart of Node.js ws_server

Deno is 14.24% slower than Node.js.

Echo name: hyper vs node native

This one is a simple program that compares the performance of Deno’s hyper based native HTTP server with Node’s native HTTP server.

Reading Node.js Deno  
TimeTakenMS 1623 1547
ReqPerSec 3080 3232
Min. 0.15 0.16
1st Qu. 0.17 0.17
Median 0.18 0.18
Mean 0.2 0.2
3rd Qu. 0.21 0.2
Max. 2.44 1.81

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.15 0.16
10% 0.16 0.17
20% 0.17 0.17
30% 0.17 0.17
40% 0.18 0.18
50% 0.18 0.18
60% 0.19 0.19
70% 0.2 0.2
80% 0.22 0.21
90% 0.24 0.23
100% 2.44 1.81

Chart of Deno echo_name_native Chart of Node.js echo_name_native

Deno is 4.68% faster than Node.js.

Concurrency=10

Here is the overview of the readings: Total requests: 50000

Reading Node.js Deno  
TimeTakenMS 5652 5444
ReqPerSec 8846 9184
Min. 0.17 0.19
1st Qu. 0.52 0.65
Median 0.69 0.74
Mean 0.82 0.8
3rd Qu. 0.92 0.86
Max. 13.81 14.76

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.17 0.19
10% 0.37 0.58
20% 0.47 0.63
30% 0.56 0.67
40% 0.62 0.7
50% 0.69 0.74
60% 0.76 0.78
70% 0.86 0.83
80% 1 0.9
90% 1.24 1.04
100% 13.81 14.76

Chart of Deno echo_name_native Chart of Node.js echo_name_native

Deno is 3.68% faster than Node.js.

Concurrency=25

Here is the overview of the readings: Total requests: 125000

Reading Node.js Deno  
TimeTakenMS 14256 14769
ReqPerSec 8768 8463
Min. 0.18 0.23
1st Qu. 1.38 2.09
Median 1.9 2.23
Mean 2.17 2.3
3rd Qu. 2.21 2.38
Max. 40.8 19.82

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.18 0.23
10% 0.68 1.91
20% 1.18 2.04
30% 1.56 2.12
40% 1.78 2.18
50% 1.9 2.23
60% 1.99 2.28
70% 2.11 2.34
80% 2.36 2.43
90% 3.52 2.66
100% 40.8 19.82

Chart of Deno echo_name_native Chart of Node.js echo_name_native

Deno is 3.60% slower than Node.js.

Concurrency=50

Here is the overview of the readings: Total requests: 250000

Reading Node.js Deno  
TimeTakenMS 29428 30509
ReqPerSec 8495 8194
Min. 0.17 0.23
1st Qu. 3.72 4.39
Median 4.3 4.69
Mean 4.63 4.86
3rd Qu. 4.78 5.01
Max. 41.03 35.56

And, here is the detailed distribution (10% quantiles) of the readings:

Quantile Node.js Deno  
0% 0.17 0.23
10% 2.64 3.87
20% 3.4 4.25
30% 3.94 4.48
40% 4.16 4.59
50% 4.3 4.69
60% 4.44 4.79
70% 4.63 4.92
80% 5.01 5.12
90% 6.32 5.7
100% 41.03 35.56

Chart of Deno echo_name_native Chart of Node.js echo_name_native

Deno is 3.67% slower than Node.js.

Next steps

There is a lot more work to be done! If you like to suggest more benchmarks, please add an issue with your suggestions.

Also, please add a star to this repository if it has been valuable. More stars means more readers and this would encourage us to keep the benchmark running.