Perlゼミ

2017年WebフレームワークベンチマークでPerl製のMojoliciousは最速のC++の56.6%の速度だ

2017年WebフレームワークベンチマークでPerl製のMojoliciousは最速のC++の56.6%の速度だ。

Web Framework Benchmarks 2017-05-10 Round 14 - Responses per second at 20 queries per request

[f:id:perlcodesample:20170726221337p:image]

[f:id:perlcodesample:20170726221331p:image]

このベンチマークは、「リクエスト当たり20のクエリに対する、一秒当たりのレスポンス数(Responses per second at 20 queries per request)」を表示したもののようだ。複数のクエリに対する性能を見るベンチマークのようだ。Mojoliciousのircで張られていたので紹介します。

ちょっと小さくて見にくいですがMojoliciosuは秒間5,353件のレスポンスを返せるようです。最速のC++のフレームワークの56.6%の速度です。C++に対して1.76倍の速度に収まっています。

このベンチマークで、単一クエリーのところを見るとそんなに速くないが、複数クエリだと、相当速いみたい。僕は、Webのパフォーマンスに、あまり詳しくないので、はっきりしたことはいえないけど、複数クエリのほうのベンチマークの方が、現実に近いように思う。

PerlはC言語/C++の20倍~100倍遅いといわれているけれど、Webにおける複数クエリのベンチマークだと、C++の1.76倍の遅さに収まる。

C++の1.76倍に収まる理由は?

あまり詳しくないので、推測で語ります。WebというのはHTTPリクエストであり、文字列処理であって、Perlは、大量の文字列処理に強いということ。並列のアクセスに対しても、メモリの使用量も小さく抑えられる。Full GCが起こらないので、レスポンス性能は高い。

数値計算においては、C言語の20~100倍遅いが、大量のテキスト処理という分野になると、パフォーマンスがC言語に近づいていくような感じはする。

実際にPerlが使われているWebの現場においても、ニュースや広告などの配信でPerlのパフォーマンスで耐えられているということがある。ベンチマークも、この現実を表現しているのかもしれない。

Mojoliciousの非同期I/Oの設計も貢献しているのだけれど、Perl自体の性能も貢献しているのかもしれない。

僕は、パフォーマンスについての理論は少し知っているが、現実のWebパフォーマンスについては、そういう現場で働いたことがないので、よくわからないので、上に書いたのは、推測ということで。

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「こっ、こしゃくな。
このPerオタクめ~!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!