About

As part of Deno's continuous integration and testing pipeline we measure the performance of certain key metrics of the runtime. You can view these benchmarks here.

You are currently viewing data for the most recent commits to the mainbranch. You can also view all commits.

Runtime Metrics

In this section we measure various metrics of the following scripts:

Execution time
3.16233.16231.00001.00000.31620.31620.10000.10000.03160.03160.01000.0100seconds
workers_startup
workers_large_message
workers_round_robin
text_encoder
text_decoder
text_encoder_into
response_string
cold_relative_import
no_check_hello
relative_import
cold_hello
hello
error_001
Download SVG
Download PNG
Download CSV

Log scale. This shows how much time total it takes to run a script. For deno to execute typescript, it must first compile it to JS. A warm startup is when deno has a cached JS output already, so it should be fast because it bypasses the TS compiler. A cold startup is when deno must compile from scratch.

Thread count
120120100100808060604040202000undefined
workers_large_message
workers_startup
workers_round_robin
error_001
text_decoder
relative_import
response_string
no_check_hello
text_encoder
cold_relative_import
hello
cold_hello
text_encoder_into
Download SVG
Download PNG
Download CSV

How many threads various programs use. Smaller is better.

Syscall count
25000250002000020000150001500010000100005000500000undefined
workers_large_message
workers_startup
workers_round_robin
text_encoder
response_string
text_decoder
text_encoder_into
relative_import
error_001
no_check_hello
cold_relative_import
cold_hello
hello
Download SVG
Download PNG
Download CSV

How many total syscalls are performed when executing a given script. Smaller is better.

Max memory usage
762.94762.94572.20572.20381.47381.47190.73190.730.000.00megabytes
workers_large_message
workers_startup
workers_round_robin
text_encoder
text_encoder_into
response_string
text_decoder
cold_hello
error_001
cold_relative_import
hello
relative_import
no_check_hello
Download SVG
Download PNG
Download CSV

Max memory usage during execution. Smaller is better.

TypeScript Performance

Type Checking
3.16233.16231.00001.00000.31620.31620.10000.10000.03160.03160.01000.0100seconds
check
no_check
Download SVG
Download PNG
Download CSV

In both cases, std/examples/chat/server_test.ts is cached by Deno. The workload contains 20 unique TypeScript modules. With check a full TypeScript type check is performed, while no_check uses the --no-check flag to skip a full type check. bundle does a full type check and generates a single file output, while bundle_no_check uses the --no-check flag to skip a full type check.

I/O

HTTP Server Throughput
0.0060.0060.0050.0050.0040.0040.0030.0030.0020.0020.0010.0010.0000.0001k req/sec

Tests HTTP server performance. 10 keep-alive connections do as many hello-world requests as possible. Bigger is better.

  • deno_tcp is a fake http server that doesn't parse HTTP. It is comparable to node_tcp
  • deno_http is a web server written in TypeScript. It is comparable to node_http
  • core_http_bin_ops and core_http_json_ops are two versions of a minimal fake HTTP server. It blindly reads and writes fixed HTTP packets. It is comparable to deno_tcp and node_tcp. This is a standalone executable that uses the deno rust crate. The code is in http_bench_json_ops.rs and http_bench_json_ops.js for http_bench_json_ops.
  • hyper is a Rust HTTP server and represents an upper bound.
HTTP Latency
60006000500050004000400030003000200020001000100000milliseconds

Max latency during the same test used above for requests/second. Smaller is better.

HTTP Server Throughput
0.0060.0060.0050.0050.0040.0040.0030.0030.0020.0020.0010.0010.0000.0001k req/sec

Tests HTTP server performance. 10 keep-alive connections do as many hello-world requests as possible. Bigger is better.

  • deno_tcp is a fake http server that doesn't parse HTTP. It is comparable to node_tcp
  • deno_http is a web server written in TypeScript. It is comparable to node_http
  • core_http_bin_ops and core_http_json_ops are two versions of a minimal fake HTTP server. It blindly reads and writes fixed HTTP packets. It is comparable to deno_tcp and node_tcp. This is a standalone executable that uses the deno rust crate. The code is in http_bench_json_ops.rs and http_bench_json_ops.js for http_bench_json_ops.
  • hyper is a Rust HTTP server and represents an upper bound.
HTTP Latency
60006000500050004000400030003000200020001000100000milliseconds

Max latency during the same test used above for requests/second. Smaller is better.

Size

File sizes
190.73190.73143.05143.0595.3795.3747.6847.680.000.00megabytes
rusty_v8_rlib
deno
swc_rlib
CLI_SNAPSHOT.bin
Download SVG
Download PNG
Download CSV

We track the size of various files here. "deno" is the release binary.

Bundle size
0.010.010.000.000.000.000.000.000.00kilobytes

Size of different bundled scripts.

Cargo Dependencies
887887886.5886.5886886885.5885.5885885undefined
cargo_deps
Download SVG
Download PNG
Download CSV

Language Server

2000020000150001500010000100005000500000milliseconds
deco_apps_edits_nav
big_file_edits
code_lens
startup_shutdown
find_replace
Download SVG
Download PNG
Download CSV

We track the performance of the Deno language server under different scenarios to help gauge the overall performance of the language server.