WindowsでRubyが遅い件について。
遅いというか特にRubyGemsを使いRails周りのごってりライブラリがついていると主に起動が(もっというとライブラリのrequireが)激重になる件。
参考:既知の問題のようです…。Windows上でのRubyのファイルIOが遅いのはなぜ?
WindowsのNTFSが遅いという説があります。
何だかそういうわけでもないみたい(Windowsでのディレクトリ操作が遅い?)→Windows での ruby の動作を速くしたい (1) - miauの避難所
解決策:
下記の検証では、Windows上とcoLinuxからcofsでWindowsの領域を読み込んでますが、それでも数倍早くなってます(体感でも)。
Linux+仮想ディスク >>>> coLinux+cofs >> Windows
題材→Four Days on Rails 2.0 (日本語版のみ)公開します
同じマシンですが、環境が全く同じにならず微妙に怪しい結果…となっています。注意
あと、思ったけど、今のRails(2009/08/08時点)で確か遅延ロードあるからあまり厳密ではないし。
環境:
rakeタスク
$ time rake routes : real 0m15.953s user 0m0.000s sys 0m0.015s $ time rake routes # 2回目(以降ほぼ変わらず) : real 0m11.315s user 0m0.000s sys 0m0.016s
遅い…(´・ω・`)
script/runner(Railsをまんま読み込む意味合いで)
$ time script/runner "puts 'UNKO WINDOWS'" UNKO WINDOWS real 0m20.271s user 0m0.015s sys 0m0.046s $ time script/runner "puts 'UNKO WINDOWS'" UNKO WINDOWS real 0m19.303s user 0m0.015s sys 0m0.062s : # 何回も実行しているとだんだん速くなってくる $ time script/runner "puts 'UNKO WINDOWS'" UNKO WINDOWS real 0m11.315s user 0m0.000s sys 0m0.046s
しかし、やはりかなり遅い…。
環境:
上記Windowsのもの+
上記ディレクトリをcofsでマウントした場合:
$ time rake routes : real 0m5.130s user 0m2.420s sys 0m2.690s $ time rake routes # 2回目(以降ほぼ変わらず) : real 0m3.270s user 0m1.460s sys 0m1.810s
rakeが3倍速!!元ファイルの置き場が同じなのに速すぎワロタw
(というか、gemsとかRubyのファイルはcoLinuxのイメージ上(ext3)にあるからだと思う)
では次、script/runnerいってみます。
$ time ruby script/runner "puts 'UNKO WINDOWS'" UNKO WINDOWS real 0m4.410s user 0m2.110s sys 0m2.300s $ time ruby script/runner "puts 'UNKO WINDOWS'" #2回目以降ほぼかわらず UNKO WINDOWS real 0m3.990s user 0m1.750s sys 0m2.240s
ヽ|/
/ ̄ ̄ ̄`ヽ、
/ ヽ
/ \,, ,,/ |
| (●) (●)||| |
| / ̄⌒ ̄ヽ U.| ・・・・・・・・ゴクリ。
| | .l~ ̄~ヽ | |
|U ヽ  ̄~ ̄ ノ |
|  ̄ ̄ ̄ |
3~5倍以上速い件…。
しかも、初回のスピードが速い。作業始めの一発目のコマンドの速度は重要。
しかし、ここまで速度差があると…。
No comment. Comments/Ruby/WindowsでRubyが遅い件?