Tech Empower Web Framework Benchmarksとは?
Tech Empower社が2013年の3月28日に公開したwebフレームワークのベンチマークです。
https://www.techempower.com/benchmarks/
GitHub
https://github.com/TechEmpower/FrameworkBenchmarks
サーバー・クライアント・集計とgithubにソースを公開してPRを受け付けていることもあり、現在も新しいフレームワークの追加が行われています。
単純にJSON,プレーンテキスト, DBクエリの表示などでレスポンスをどれだけ返せるかのベンチマークとなっており、WEB APIや軽量なフレームワークを作成する側にも手っ取り早い指標になりました。
発表されたタイミング的にもモノリシックなMVCアプリケーションから軽量なフレームワークへの移行について話題が増えた時期だったため、各フレームワークからのフィードバックもありました。
言語を跨いだベンチマークは最適化の問題があり、あまり継続的にメンテされていることはないのですが、本ベンチマークは、必要であれば低レイヤーからカスタマイズできる点、Webフレームワーク自体はシンプルなテストとなっている点などもあり、新しいフレームワークの追加も容易になっており、新しいトピックが集まったタイミング(現時点では年単位)で発表が続いてます。
C#の成績
はじめに
C#上では、HttpListenerがHTTP通信の基礎となります。
HttpListenerでは、単純な内容の通信を大量に捌くのには向いてないのですが、ブラウザーとHTTP上で発展してきた他環境のサーバーサイドプログラマーに比べて、WindowsやC#界隈ではサーバー・クライアント間でソケット通信でプログラムを実装する文化があったためか、
共通のHttpサーバーで大量なリクエストを捌く需要があまりなかったようです。
Round 5 (2013-05-17)
https://www.techempower.com/benchmarks/#section=data-r5&hw=ph&test=json&l=4fti4d
Best JSON responses per second, i7-2600K hardware(1 tests)
aspnet-mvc-mono 1,816
windows上のベンチマークも可能ですが、本ベンチマークでのC#フレームワークはmono/linux構成のものが中心でした。
この時期はまだmono GCではsgenがデフォルトにはなっておらず、bohem GCが使われていました。
https://www.techempower.com/benchmarks/#section=data-r5&hw=ph&test=json
servlet 212,845
php 35,651 (PHP Version 5.4.13 with FPM and APC, nginx 1.2.7)
Round 6 (2013-07-02)
Best JSON responses per second, i7-2600K hardware(3 tests)
https://www.techempower.com/benchmarks/#section=data-r6&hw=ph&test=json&l=4fti4d
servicestack-nginx-default 2,448
nancy-mono 2,346
aspnet-mvc-mono 2,187
Round 7 (2013-10-31)
Best JSON responses per second, i7-2600K hardware(9 tests)
https://www.techempower.com/benchmarks/#section=data-r7&hw=ph&test=json&l=4fti4d
aspnet-svcstk 29,150
aspnet 29,122
aspnet 27,990
nancy 22,668
aspnet-jsonnet-mono 1,039
aspnet-svcstk-mono 941
servicestack-nginx-default 882
aspnet-mvc-mono 881
nancy-mono 800
IIS/Windowsの実装が動くようになりました。
GCにsgenを使えばパフォーマンスが上がるため、sgenを利用するよう
にしてもらいましたが、エラーが発生してしまい成績が落ちてました。
(sgenがデフォルトになったため不要になりました)
https://github.com/TechEmpower/FrameworkBenchmarks/commits/R7/aspnet
Round 8 (2013-12-17)
Best JSON responses per second, i7-2600K hardware(10 tests)
https://www.techempower.com/benchmarks/#section=data-r8&hw=ph&test=json&l=4fti4d
evhttp-sharp 91,557
aspnet-svcstk 29,106
aspnet 28,968
aspnet 27,946
nancy 22,661
servicestack-nginx-default 953
nancy-mono 896
aspnet-jsonnet-mono 863
aspnet-svcstk-mono 838
aspnet-mvc-mono 72
Round 9 (2014-05-01)
Best JSON responses per second, Dell R720xd dual-Xeon E5 v2 + 10 GbE(11 tests)
https://www.techempower.com/benchmarks/#section=data-r9&hw=ph&test=json&l=4fti4d
nancy 62,108
servicestack-nginx-default 4,639
nancy-mono 3,698
aspnet —
aspnet —
aspnet-svcstk —
evhttp-sharp —
aspnet-jsonnet-mono —
aspnet-mvc-mono —
aspnet-svcstk-mono —
servicestack —
Round 10 (2015-04-21)
https://www.techempower.com/benchmarks/#section=data-r10&hw=ph&test=json&l=4fti4d
Best JSON responses per second, Dell R720xd dual-Xeon E5 v2 + 10 GbE(1 tests)
nancy-mono 1,859
Round 11 (2015-11-23)
Best JSON responses per second, Dell R720xd dual-Xeon E5 v2 + 10 GbE(8 tests)
https://www.techempower.com/benchmarks/#section=data-r11&hw=ph&test=json&l=4fti4d
evhttp-sharp 113,449
aspnet-mvc-mono 3,049
aspnet-svcstk-mono 3,047
aspnet-jsonnet-mono 3,042
aspnet-mvc-mono 2,925
servicestack-nginx-default 2,523
nancy-mono 1,831
servicestack —
Round 12 (2016-02-25)
No data available for this test.
https://www.techempower.com/benchmarks/#section=data-r12&hw=ph&test=json&l=4fti4d
Round 13 (2016-11-16)
Best JSON responses per second, Dell servers at ServerCentral(11 tests)
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=json&l=4fti4d
aspnetcore-linux 264,649
aspnetcore-mvc-linux 185,435
revenj 97,190
evhttp-sharp 96,501
aspnet-svcstk-mono 6,307
aspnet-mvc-mono 6,276
servicestack-nginx-default 5,707
aspnet-jsonnet-mono 5,495
nancy-mono 4,653
aspnet-mvc-mono 4,330
servicestack —