👋

deno ts-node tsx esbuildの起動速度比較

2024/11/04に公開

比較方法

denoの場合は以下の方法、

import { format } from "jsr:@std/datetime@0.224.0/format"
console.log(format(new Date(), "yyyy-MM-dd HH:mm:ss.SSS"));

node.jsの場合は以下の方法

import dateformat from "dateformat";
console.log(dateformat(new Date(), "yyyy-mm-dd HH:MM:ss.l"));

で、ミリ秒単位の現在時刻を表示。batで同じコマンドをループで繰り返して1回あたりの時間を計測。
windowsにはtimeコマンドなんてものは無い。

実行速度ではなく起動速度なので本番で使う時は気にする必要がないけど、何度も起動する開発中は効いてくるんだよね。

実行環境

denoとnodeのバージョンは以下の通り。

$ deno --version
deno 2.0.4 (stable, release, x86_64-pc-windows-msvc)
v8 12.9.202.13-rusty
typescript 5.6.2

$ node --version
v22.11.0

nodeのライブラリバージョン

  • esbuild: 0.24.0
  • esbuild-register: 3.6.0
  • ts-node: 10.9.1
  • tsx: 4.19.2

deno

106ms

node

No. ミリ秒 実行コマンド package.jsonのscript
1 1511 ms npm run start --silent ts-node ./src/index.ts
2 785 ms npm run start --silent tsx ./src/index.ts
3 500 ms npm run start --silent node -r esbuild-register ./src/index.ts
4 171 ms node -r esbuild-register src\index.ts 未使用

まとめ

大体想定通り。
速度だけを考えるならdeno一択だし、-r esbuild-registerの様な長いオプションを指定する必要も無いし、パッケージがcjsかesmかを考える必要も無い。
それでもnodeでしか動かないフレームワークは山のようにあるからな…。

npm scriptがかなり遅い事も判明。
nodeを直接使うesbuildはdeno比較でそこそこの速度になっているが、それ以外はちょっと遅すぎるよ。

Discussion