Skip to main content

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 main branch. You can also view all commits or append e.g. ?-100 to this page's URL to view results for the last 100 commits.

Runtime Metrics

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

Execution time

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.

Execution time (Web Workers)

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

How many threads various programs use. Smaller is better.

Thread count (Web Workers)

How many threads various programs use. Smaller is better.

Syscall count

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

Syscall count (Web Worker)

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

Max memory usage

Max memory usage during execution. Smaller is better.

Max memory usage (Web Worker)

Max memory usage during execution. Smaller is better.

I/O

HTTP Server Throughput

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

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

WebSocket Server Throughput

Tests WebSocket server performance. 100 concurrent connections do as many echo requests as possible. Bigger is better.

HTTP Server Throughput

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

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

WebSocket Server Throughput

Tests WebSocket server performance. 100 concurrent connections do as many echo requests as possible. Bigger is better.

Size

File sizes

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

Snapshot file sizes

We track the size of various snapshot files here.

Cargo Dependencies

Language Server

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