TechEmpowerは昨年から、Webフレームワークのパフォーマンスを測定、比較しようと、ベンチマークを走らせてきた。このベンチマークでは「フレームワーク」という言葉がゆるく使われており、ここにはプラットフォームやマイクロフレームワークも含まれている。
最初のベンチマーク結果は2013年4月に公開され、テストは2種類のハードウェア設定(2台のAmazon EC2 m1.largeインスタンスと2台のIntel Sandy Bridge Core i7-2600K (8GB RAM)、いずれもギガビットイーサネットを使用)で実施された。テストは単純なJSONレスポンス{"message" : "Hello, World!"}
で応答するというものだった。以下は結果の抜粋で、ベンチマークされた24のWebフレームワークから主要なもの10について、リクエスト/秒(RPS)と最高の結果に対する比率を示している。
1年経ち、ベンチマークは119のフレームワークをカバーするまでに拡大し、複数の種類のクエリとレスポンス、2台のDell R720xd Dual-Xeon E5 v2(それぞれ32GB RAMと10Gビットイーサネット)という追加のハードウェア構成における実行も含まれている。
9ラウンド目のベンチマークが最近公開された。以下はその抜粋だ。今回は3つの異なるハードウェア構成で実施された。
観測結果
RPSについて見ると、ハイエンドなハードウェアはローエンドよりも確かにパフォーマンスがよいが、 Xeon E5とIntel i7にあるように、上位のフレームワークの順位には大きな変動がある。Intel i7の場合、90%を超えているものが多数あることから、TechEmpowerは1Gビットイーサネットによるボトルネックによるものだと考えている。
最初のラウンド以来、最高レベルのパフォーマンスのフレームワークおよびプラットオームはギガビットイーサネットによるネットワークの制限を受けていることがわかりました…。十分なネットワーク帯域を使うと、最高レベルのパフォーマンスのフレームワークにはもっと違いが現れてきます。
GoogleのGoはIntel i7でトップだが、すべてのコアを使っているにもかかわらず、Xeon E5ではパフォーマンスが大きく落ちている。TechEmpowerによると、これは特定のタイプのハードウェアアーキテクチャに対するパフォーマンスチューニングの重要性を表しているという。
Peak [Xeon E5]テスト環境は2つのE5プロセッサで40 HTコアのサーバを使っており、結果はそれぞれのフレームワークがいかにうまく単一サーバノードにおける高い並列性にスケールするかを示しています。
もちろん、HTプロセッサコアの数(40に対してi7テストの場合は8)、異なるシステムアーキテクチャ、NUMAといった、他の変数の影響もあります。
Amazon EC2 M1.largeは他に比べてかなりパフォーマンスが低く、クラウドコンピューティングインスタンスとして費用/性能比が魅力的なのか疑問を抱かせるものだ。
-*) 多くのフレームワークはLinuxベースだ。EC2やi7ではWindowsフレームワークはベンチマークされていない。最高のWindowsフレームワーク(plain-windows)のパフォーマンスはE5のトップの18.6%だ。また、FacebookのHHVMはEC2にはない。また、HHVMをFacebookのハードウェア上で動かしたときには、かなりチューンされているだろう。
よく知られているGrails、Spring、Django、Railsといったフレームワークは、使われたハードウェア構成すべてでかなりパフォーマンスが低い。
最近リリースされたDart 1.3のパフォーマンスは2倍になっているのでNode.jsに匹敵するはずだが、このラウンドではDart 1.2が使われているので、ベンチマークには表れていない。これは最近改善された別のフレームワークにも当てはまるかもしれない。こうした改善は今後のベンチマーク結果に表れるだろう。
他のパフォーマンスベンチマークと同様、結果はハードウェア、ネットワーク、システム構成に依存しており、異論もあるだろう。TechEmpowerはお気に入りのフレームワークの結果を向上させることに関心のある人たちに向けて、GitHubにあるコードをフォークするようすすめている。
ベンチマークには、テストの実施方法、そのハードウェア構成、各フレームワークのコンポーネント(言語、Webサーバ、OSなど)の詳細な説明が含まれている。