普段何気なく目にしているウェブサイトも、裏ではさまざまなフレームワークを活用しています。「Web Framework Benchmarks」はそうしたフレームワークたちがアクセスをさばくときの処理速度を計測してベンチマークにまとめたもので、2013年に公開されて以降、年々アップデートが積み重ねられて多種多様なフレームワークの実力を一目で確認できるようになっています。

TechEmpower Framework Benchmarks

https://www.techempower.com/benchmarks/

上記のURLへアクセスすると、2020年5月28日にアップデートされた「Round 19」の内容が表示されます。



こんな感じでテスト結果がランキング形式で表示されます。さまざまなテスト結果が掲載されていますが、最初に表示される「Fortunes」はデータベースを読み取ってHTMLを生成するという一般的なウェブサイトに近いモード。このテストで1位を取ったのはC++で書かれた「Drogon」というフレームワークで、テスト機のDell R440では毎秒67万8278件のリクエストを処理できたとのこと。



phpにNginxとPostgreSQLのスタンダードな組み合わせは11位とかなり上位。DBをMySQLに変えるとやや処理速度が落ちるようで、こちらは23位となっていました。



グラフの右側にはフレームワークの分類や用いられている言語など、さまざまな環境情報が書かれています。フルスタックなフレームワークだけでなく、プラットフォームやマイクロフレームワークまで比較しようとするとこうした情報も必要に。



右上の「Hardware」のカラムで「Cloud」をクリックすると、クラウド上の仮想サーバーでのテスト結果に切り替えることができます。物理サーバーでは5位だったRustのmay-minihttpというフレームワークが1位に上ってくるなど、案外変動がおきている模様。なお、仮想サーバーとしてはAzureのD3 v2が使われているそうです。



特定のベンチマークだけをフィルターで絞り込むことも可能。グラフの上にある「Show filters panel」をクリックすると……



こんな感じでフレームワークの分類、言語やプラットフォーム、フロントエンドサーバー、DBサーバーなどを絞り込めるパネルが現れます。



例えばJavaScriptのフレームワークだけを見たいときはLanguage欄を「JavaScript」だけが有効な状態にすればOK。



フィルターを設定したら右下の「Apply changes」をクリックすれば表に反映されます。



フィルターで表示された1位を100%としてパーセンテージが再計算されるので、同じ言語のフレームワークごとの違いが一目瞭然となっています。括弧内に元のパーセンテージも表示されており、全体から見た場合のポジションも見失わない親切仕様です。



最下部では「Fortunes」がどんなテストなのか確認可能。Unixのフォーチュンクッキー・メッセージを利用したテストなので「Fortunes」という名前のようです。



Fortunes以外にもJSONのシリアライズやDBのクエリなど、合計で8個のテストが用意されていますが、「Composite scores」のページで全てのテストをパスした精鋭たちの総合評価を確認できるようになっています。ここでも1位を獲得したのはDrogonでした。



なお、このベンチマークに用いられるソースコードはGitHubで公開されており、フレームワークの設定の修正や新しいフレームワークの追加はプルリクエストから受け付けてもらえるとのことです。