Tech Empower Web Framework BenchmarksとC#


# 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](https://github.com/TechEmpower/FrameworkBenchmarks/tree/659e324f8c4fa5fcc8e00521fc2e002863eb8733/aspnet)	1,816

windows上のベンチマークも可能ですが、本ベンチマークでのC#フレームワークはmono/linux構成のものが中心でした。

この時期はまだmono GCでは[sgen](http://www.mono-project.com/docs/advanced/garbage-collector/sgen/)がデフォルトにはなっておらず、bohem GCが使われていました。

https://www.techempower.com/benchmarks/#section=data-r5&hw=ph&test=json
[servlet](https://github.com/TechEmpower/FrameworkBenchmarks/tree/659e324f8c4fa5fcc8e00521fc2e002863eb8733/servlet) 212,845
[php](https://github.com/TechEmpower/FrameworkBenchmarks/blob/659e324f8c4fa5fcc8e00521fc2e002863eb8733/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	—