まだしぶとく WSGI に移行せずに CGI を書いています。ちょっと気になったので、言語によって CGI の応答速度はどれくらい違うのか、調べてみました。
環境
- ConoHa VPS 512 MB
- Debian 9 Stretch x64
言語は次の通り。
- C (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1))
- JavaScript (Node.js v10.10.0)
- Python2 (Python 2.7.13 (default, Nov 24 2017, 17:33:09) [GCC 6.3.0 20170516] on linux2)
- Python3 (Python 3.5.3)
- Perl (v5.24.1)
測定方法
いずれの言語も次のような内容を出力するだけの最も簡単な CGI としました。
Content-type: text/html; charset=utf-8 <p>Hello, world! written in *.</p>
応答時間は Chrome の開発者ツールで Network タブの表示を見ました。「リクエスト開始からレスポンスの最終バイトを受け取るまでにかかった合計時間」だそうです。
結果
言語 | 時間 [ms] |
---|---|
Perl | 28 |
C | 29 |
Python2 | 38 |
Python3 | 46 |
JavaScript | 95 |
まとめ
Perl が C と拮抗するとは意外でした。昔は CGI といえば Perl の時代でしたから、それだけ最適化が進んでいるのでしょうか。
今回は単純に 2 行のテキスト出力を行っているだけですが、これがもっと複雑な処理を行うとなると結果は異るでしょう。参考程度に。