条件
ruby1.9.3p484 rails3.2.13 gem1.8.23
ruby2.0.0p247 rails3.2.14 gem2.1.0
-
ruby2.1.0dev rails4.0.2 gem2.2.0.preview.1
で比較を行いました。
何故この選択をしたかというと、
springの有無による速度差と、バージョンによる速度差を確認したかったからです。
gem spring
はrailsがベースにしているgemが2.1.0の際にgemを更新するように警告を発する
(springで爆速rake生活を参照)ので、
gem2.1.0前後で速度差がどれほどのものか確認したかったからです。
rails g blog title:string description:string
[ProjectName]::Application.routes.draw do
resources :blogs
end
の条件で
bundle exec time rake routes
とbundle exec time spring rake routes
の実行時間を5回ずつ測定し、その平均を求めました。
結果
以下の画像のようになりました。
平均実行時間
rails3.2.13/gem1.8.23
springなし 1.25秒
springあり 0.368秒
実行時間削減率 70.56%
rails3.2.14/gem2.1.0
springなし 0.992秒
springあり 0.416秒
実行時間削減率 58.06%
rails4.0.2/gem2.2.0.preview.1
springなし 1.33秒
springあり 0.494秒
実行時間削減率 62.85%
※太字は3条件の内もっとも優秀なもの
雑感
この結果を見るに、rails4はだいぶもっさりなのかなと思えます。
実験の条件次第で変わってくるでしょうが、参考程度にお願いします。
また、springは60~70%の高速化を実現しており、
rake db:seed
やrake db:migrate:reset
ひいてはrails s
やrails g
やrspec
などで思考の流れを絶つリスクを下げてくれることでしょう。
備考
spring導入方法は
springで爆速rake生活
を参考にしていただけると幸いです。
#追記
rubyのバージョンが速度に大きく影響している可能性を検証するために
rubyのバージョンを固定してrailsの速度を比較してみました。