Rails-1.2.3、2.1.2、2.2.2、2.3 の性能の変遷 (render :text にて)
Rails-2.3 の RC1 をまだ触ってなかったので、インストールがてら試してみました。
render :text => "Hello World!" なアプリに対して、Apache Bench から負荷をかけ、スループットの平均 (5回計測し、最大と最小を除いて平均値を算出) をとっています。
2.1 に比べて 2.2 でスループット性能がかなり落ちたのが、2.3 RC1 では少し復活しているようですね。また、threadsafe オプションの効能はここではあまり見られませんでした。
# 1.x 系から 2.x 系は大きな飛躍がありましたが、Merb ベースとなる 3.x 系にも期待できると嬉しいですね。 :-p
結果
バージョン | 平均値 [#/sec] | すべての計測値 [#/sec] |
---|---|---|
Rails-2.3 RC1 | 377.75 | 350.03, 381.57, 375.1, 376.57, 381.83 |
Rails-2.3 RC1 (threadsafe!) | 322.07 | 315.51, 320.87, 317.72, 327.63, 330.15 |
Rails-2.2.2 | 329.04 | 326.77, 335.3, 326.37, 328.55, 331.8 |
Rails-2.2.2 (threadsafe!) | 333.12 | 336.42, 338.0, 337.36, 325.58, 276.85 |
Rails-2.1.2 | 440.97 | 435.08, 440.06, 445.48, 441.13, 441.72 |
Rails-1.2.3 | 59.86 | 79.98, 63.47, 58.56, 57.56, 56.1 |
環境
- iMac (intel Core 2 Duo 2.33GHz)
- Mac OS X 10.5.6
- 処理系、ライブラリのバージョンは以下のとおり
% ruby186 -v ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-darwin9.6.0] % gem list --local rails *** LOCAL GEMS *** rails (2.3.0, 2.2.2, 2.1.2, 1.2.3) mongrel (1.1.5)
- HelloWorld アプリ
% rails _x.x.x_ helloworld # x.x.x には Rails のバージョン % cd helloworld % ruby186 script/generate controller tests % vi app/controllers/tests_controller.rb class TestsController < ApplicationController def index render :text => "Hello World!" end end a % ruby186 script/server -e production % curl http://127.0.0.1:3000/tests Hello World!% % ab -n 10000 -c 10 http://127.0.0.1:3000/tests