👋
deno ts-node tsx esbuildの起動速度比較
比較方法
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