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

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

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.

Max memory usage

Max memory usage during execution. Smaller is better.

TypeScript Performance

Type Checking

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

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.

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.

Size

File sizes

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

Bundle size

Size of different bundled scripts.

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.