Windows7 64bitにおけるirbを速くする。
2015-01-23
事象
Windowsにおいて、irbの入力に対するレスポンスが極めて遅い。 特にWindows7 64bitで起きる。
原因
原因候補1
Windows7 64bitでirb.batが異常に重い時 - komorebikoboshiのブログ
どうもruby.exeが32bit版なのにbatファイルを実行するコマンドプロンプトが64bit版なのが問題らしい。
原因候補2
irbの入力が遅いときはreadlineをオフにしてみては? - Survive in Net.
でも、irbの入力処理にはreadlineが使われているらしいこと、起動オプションでオン・オフを切り替えられることが分かった。 で、起動オプションの”–noreadline”を使ってみたら、サクサクになったよ。
irb --noreadlineとして起動してみたところ、履歴機能(↑キー)が動作しなかったが、
何か文字を打ってから、↑キーを押すと何故か動作した。
解決方法
32bit版のcmd.exe「C:\Windows\SysWOW64\cmd.exe」を使って、irb.batを呼び出す。
Rubyのbinディレクトリ下の
irb.bat、irbをそれぞれ
irb_original.bat、irb_originalにリネーム。
irb.batを新規作成し、以下を記述。
@echo off
C:\Windows\SysWOW64\cmd.exe /c irb_original.bat --noreadline %*
これでirbコマンドのまま高速化できる。
irb.batだけでなくirbもリネームするのは、
irb.batから同名のファイル(irb)が実行されるため。
irbの終了方法
--noreadlineを使うと、Ctrl+Dで一発終了できなくなる。
Ctrl+Z→Enterで終了できる。
もちろん、exitでも終了できる。