🚅
DenoとNode.jsの速度を比べてみた
DenoってRust製だし、なんとなく速そうなイメージありますよね。
なので、Node.jsと比べてみました。
実装
なるべく、シンプルに、それぞれに組み込まれているライブラリのみでPOSTリクエストのボディをパースして結果をレスポンスするアプリケーションを作りました。もっとこうすれば早くなるぜというご意見などありましたらどうぞよろしくお願いします。
Node
Deno(std/http)
Deno(Native)
測定
drill
という負荷テストツールを使いました。Rust製なので速そうというイメージです。
結果
実行数: 10000回
並列数: 100回
Deno(std/http) | Node | Deno(Native) | |
---|---|---|---|
Time taken for tests | 2.5 seconds | 2.3 seconds | 2.4 seconds |
Total requests | 10000 | 10000 | 10000 |
Successful requests | 10000 | 10000 | 10000 |
Failed requests | 0 | 0 | 0 |
Requests per second | 3976.40 | 4255.61 | 4177.48 |
Median time per request | 8ms | 8ms | 9ms |
Average time per request | 20ms | 20ms | 22ms |
Sample standard deviation | 39ms | 42ms | 43ms |
並列数: 1000回
接続できなくてエラーになるリクエストがありました。
Deno(std/http) | Node | Deno(Native) | |
---|---|---|---|
Time taken for tests | 2.4 seconds | 2.7 seconds | 2.4 seconds |
Total requests | 10000 | 10000 | 10000 |
Successful requests | 9520 | 9820 | 9582 |
Failed requests | 480 | 180 | 418 |
Requests per second | 4131.92 | 3735.30 | 4124.99 |
Median time per request | 239ms | 248ms | 241ms |
Average time per request | 221ms | 214ms | 229ms |
Sample standard deviation | 170ms | 83ms | 79ms |
感想
ということで、言ってもそんなに変わらない、というかNode.jsのほうが優秀みたいな結果になりました。
もっと早く書ける方法とかあったら教えてください。
以上です。
よろしくお願いいたします。
Discussion
Deno の std/http は TypeScript 実装であり、Runtime API の方が速いようです。
参考: https://deno.com/blog/v1.9#native-http%2F2-web-server
ありがとうございます!
書き直しましたが、あまり変わらず・・・。ちょっと重くするためにやってるJSON.parseとJSON.stringifyが関係してるんですかね。
記事にも反映しておきます。