当我将以下文本粘贴到在 ruby-enterprise-2011.03 下运行的 IRB 或 PRY 中时,需要 13 秒。
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
在同一台计算机上运行 irb 和其他 ruby 安装时,粘贴并不慢。
jruby-1.5.6
jruby-1.6.3
ruby-1.8.6-p420
ruby-1.8.7-p352
ruby-1.9.1-p431
ruby-1.9.2-p290
ruby-1.9.3-preview1
or Mac OS X's default system install of 1.8.7-p249
这个问题与Rails 控制台在编辑文本时运行速度非常慢有关,但我没有使用 rvm,并且在编写、编辑或删除文本时没有缓慢;只有粘贴很慢。@fl00r 的建议有效,但这不是永久修复。
此外,如果粘贴的文本中有硬换行符,则只有最后一行很慢。例如,粘贴以下文本只需大约 1.5 秒
# Lorem ipsum dolor sit amet, consectetur adipisicing elit,
# sed do eiusmod tempor incididunt ut labore et dolore magna
# aliqua.
我注意到 REE 加载了 libreadline 的副本,其他 ruby 安装都没有加载。有没有办法配置和编译 REE 以忽略 MacPorts 中的 libreadline 文件?
require 'readline'
puts `lsof -p #{$$} | grep -i readline | awk '{print $9}'`
puts
我在几个 ruby 安装上运行了上面的脚本。只有底部的 2 个安装(REE 安装)包含额外的 libreadline。
=== ruby-1.8.6-p36 ======================
/opt/ruby-1.8.6-p36/lib/ruby/1.8/i686-darwin11.2.0/readline.bundle
=== ruby-1.8.6-p420 ======================
/opt/ruby-1.8.6-p420/lib/ruby/1.8/i686-darwin11.0.1/readline.bundle
=== ruby-1.8.7-p352 ======================
/opt/ruby-1.8.7-p352/lib/ruby/1.8/i686-darwin11.0.1/readline.bundle
=== ruby-1.9.1-p431 ======================
/opt/ruby-1.9.1-p431/lib/ruby/1.9.1/i386-darwin11.0.1/readline.bundle
=== ruby-1.9.2-p290 ======================
/opt/ruby-1.9.2-p290/lib/ruby/1.9.1/x86_64-darwin11.0.1/readline.bundle
=== ruby-1.9.3-preview1 ==================
/opt/ruby-1.9.3-preview1/lib/ruby/1.9.1/x86_64-darwin11.0.1/readline.bundle
=== ruby-enterprise-1.8.7-2011.03 ========
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/i686-darwin11.0.1/readline.bundle
/opt/local/lib/libreadline.6.2.dylib
=== ruby-enterprise-1.8.7-2012.01 ========
/opt/ruby-enterprise-1.8.7-2012.01/lib/ruby/1.8/i686-darwin11.2.0/readline.bundle
/opt/local/lib/libreadline.6.2.dylib