Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Application Framework 初夏のベンチマーク祭

Web Application Framework 初夏のベンチマーク祭

新卒技術勉強会で発表した資料

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

July 07, 2015
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. Web Application Framework 初夏のベンチマーク祭 水音氷音

  2. 目次 • 目的 • フレームワーク 紹介 • ベンチマーク 取り方 •

    ベンチマーク 結果発表 • 考察・まとめ
  3. ベンチマークの目的 Crystal が本当に早いのか知りたい 目的 手段 • 複数言語・フレームワークの速度を計測 • 結果を元に Crystal

    の速度を相対的に比較
  4. フレームワーク紹介  Ruby on Rails  Sinatra  Amethyst 

    Amon2  Flask  Express Perl Ruby  Revel Go Python Crystal JS
  5. ベンチマークの取り方 計測方法 計測値  単純リクエスト  配列演算処理  レスポンス時間 

    秒間リクエスト数 ※ 参照: 計測には wrk を使用 https://github.com/wg/wrk
  6. [ベンチマーク詳細] 単純リクエスト • GET で以下の JSON を返す { “ok”: true,

    “langugage”: “言語名”, “framework”: “フレームワーク名”, “time”: UNIX time, }
  7. [ベンチマーク詳細] 配列演算処理 • 素数の計算 – 100,000 以下の素数をすべて求める • エラトステネスの篩 –

    計算量 O(N log log N) • 配列へのランダムアクセス 多様
  8. ベンチマーク補足 • 処理系のバージョン – Crystal v0.7.4 – Go 1.4 –

    Node v0.12.5 – Perl 5.22.0 – Ruby 2.2.2 – Python 2.7.10 / 3.4.3 • フレームワークバージョン – 7月5日時点での 最新安定版 • 測定条件 – rookies 同一 VPS 内 – wrk 2 threads / 10 connections – Production / Release ENV で測定 – 高速化 チューニング無し • 計測コード – GitHub 上ですべて公開 https://github.com/pine613/wa f_benchmark
  9. [ベンチマーク結果] 単純リクエスト (レスポンス時間) Crystal/ Amethyst Go/ Revel Perl/ Amon2 Node/

    Express Python/ Flask Ruby/ Sinatra Ruby/ Rails Latency (ms) 0.57 1.44 2.93 5.15 10.10 43.72 47.99 0.00 10.00 20.00 30.00 40.00 50.00 60.00 Latency (ms)
  10. [ベンチマーク結果] 単純リクエスト (秒間リクエスト数) Crystal/ Amethyst Go/ Revel Perl/ Amon2 Node/

    Express Ruby/ Sinatra Ruby/ Rails Python/ Flask Req / Sec 19552.00 7010.00 3588.00 1977.00 985.00 228.00 208.00 0.00 5000.00 10000.00 15000.00 20000.00 25000.00 Request / Sec (回)
  11. [ベンチマーク結果] 配列演算処理 (レスポンス時間) Crystal/ Amethyst Go/ Revel Node/ Express Perl/

    Amon2 Ruby/ Sinatra Python/ Flask Ruby/ Rails Latency (ms) 5.90 6.09 13.73 141.42 222.00 245.38 258.99 0.00 50.00 100.00 150.00 200.00 250.00 300.00 Latency (ms)
  12. [ベンチマーク結果] 配列演算処理 (秒間リクエスト数) Crystal/ Amethyst Go/ Revel Node/ Express Perl/

    Amon2 Ruby/ Rails Ruby/ Sinatra Python/ Flask Req / Sec 1692.00 1639.00 727.00 67.00 44.00 40.00 38.00 0.00 200.00 400.00 600.00 800.00 1000.00 1200.00 1400.00 1600.00 1800.00 Request / Sec (回)
  13. 考察・まとめ • Crystal は本当に早かった – Ruby 界に革命をもたらす速度 • さらに詳しいベンチマークが必要 –

    ミドルウェアとの組み合わせ etc • Crystalの未来は明るい
  14. Fin. Let’s enjoy your Crystal life!