Akka HTTP is faster than Spray now

こんにちは、t-hiroyoshiです。

先日Akka 2.4.9-RC1がリリースされました。
今回のリリースはAkka HTTPのパフォーマンス改善に焦点を絞ったアップデートでAkka HTTPのパフォーマンスがSprayと同等かそれ以上になったと書かれています。

Akka HTTP revenge

以前Akka HTTPとSpray-canのベンチマークを取った時はSprayに軍配が上がりましたが、今回のアップデートはどれほどのものなのか軽く調べるために再度Akka HTTPのみベンチマークを取りました(Sprayはもう更新されていません)。

コードやベンチマーク環境は前回と同じ状態でAkkaのバージョンのみ上げています。

Result

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Server Software: akka-http/2.4.9-RC1
Server Hostname: localhost
Server Port: 8080
Document Path: /
Document Length: 12 bytes
Concurrency Level: 10
Time taken for tests: 0.336 seconds
Complete requests: 10000
Failed requests: 0
Keep-Alive requests: 10000
Total transferred: 1820000 bytes
HTML transferred: 120000 bytes
Requests per second: 29805.82 [#/sec] (mean)
Time per request: 0.336 [ms] (mean)
Time per request: 0.034 [ms] (mean, across all concurrent requests)
Transfer rate: 5297.52 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 0 0.4 0 17
Waiting: 0 0 0.4 0 17
Total: 0 0 0.4 0 17
Percentage of the requests served within a certain time (ms)
50% 0
66% 0
75% 0
80% 0
90% 0
95% 1
98% 1
99% 2
100% 17 (longest request)

前回のベンチマークではSpray-canが23230.85 req/secでSpray-canの方がパフォーマンスが良かったですが、今回Akka HTTPは29805.82 req/secというSpray-canを越す数値を叩き出しました。
前回のベンチマークから4ヶ月ぐらいしか経っていないのにこんなに速くなるとは驚きです。

Next steps for Akka HTTP

今後のAkka HTTPのことについては、Sprayの終末とAkka HTTPへの置き換えを推奨していて近いうちにexperimentalが外れるようです。
HTTP/2についても今後やっていくようでここから追えます。
期待しながら待ちたいと思います。