Ruby on rails Rake测试在Windows中非常慢

Ruby on rails Rake测试在Windows中非常慢,ruby-on-rails,windows,ruby,Ruby On Rails,Windows,Ruby,为什么Ruby和RubyonRails(1.8.6一键安装程序,本地数据库)在Windows上的速度如此之慢 ruby脚本/服务器-30秒 耙试验-45秒 等等 然而,当我跳转到一个速度慢得多的linux机器上时,它实际上是即时的。我已经检查了一切-没有重大的CPU进程运行,没有网络问题。。。等等 见鬼,我很乐意看到一个详细的输出,至少告诉我它在哪里出了故障。有什么建议吗?一般来说,Ruby的MRI解释器在windows上并没有针对速度进行优化。您也可能在windows上以开发模式运行它,而

为什么Ruby和RubyonRails(1.8.6一键安装程序,本地数据库)在Windows上的速度如此之慢

  • ruby脚本/服务器-30秒
  • 耙试验-45秒
  • 等等
然而,当我跳转到一个速度慢得多的linux机器上时,它实际上是即时的。我已经检查了一切-没有重大的CPU进程运行,没有网络问题。。。等等


见鬼,我很乐意看到一个详细的输出,至少告诉我它在哪里出了故障。有什么建议吗?

一般来说,Ruby的MRI解释器在windows上并没有针对速度进行优化。您也可能在windows上以开发模式运行它,而在其他计算机上以生产模式运行它。Rails在开发模式下运行要慢得多,因为它会根据每个请求重新加载所有类

1.8.6是一个非常古老的ruby版本。大约3年前发布。你应该强烈地考虑升级到1.9(或者至少1.8)。或者切换到JRuby。所有这些选项都可能导致显著的性能改进

1.8.7应与1.8.6完全兼容。1.9有一个全新的解释器,运行速度快了2.5倍(尽管它有时会在windows上崩溃)。JRuby可能是您的理想解决方案,因为您可以在兼容1.8或1.9的环境下运行它,而且它非常稳定,但它不支持带有C扩展的gems,并且需要不同的数据库适配器


最后一个选择是尝试在VMWare中使用CentOS或其他Linux发行版运行Rails

原因是windows中的文件stat速度非常慢,而且由于Ruby是在Linux上编写的(并针对Linux进行了优化),因此没有太多的工作来提高它的速度

使用rubynstaller.org(1.8.6或1.9.x)可以让它更快——我建议使用1.8.6,因为1.9本身也有一些减速

如果你想变得更具攻击性,你可以试试我的更快的gem脚本gem,它试图缓存基于需求的查找,从而加快速度。不过,还是用ruby的scratch版本来实现:)

不幸的是,Jruby的查找速度也不太快。希望有一天这种情况会改变。在那之前,我的更快的脚本和更快的要求是我所知道的唯一尝试加速的方法

为了加速,你可以试试我的加载器speeder upper(帮助rails在打瞌睡时跑得更快): 此外,还可以检查spork,它在doze中工作,jruby也工作得很好

-rp

更新:感谢(部分)路易斯·拉维纳(Luis Lavena)所做的一些非常出色的工作,Ruby 1.9.3-p327在Windows上的速度要快得多
rake
过去在1.9.3-p125上执行需要110秒以上的时间,现在在p327上执行需要20秒左右。Rails终于可以在Windows上使用了


用于安装..

我喜欢采用这种方法:

就我而言

finisher_hook: 22.463 sec

这就是罪魁祸首

此外,OP可能使用的是一键式安装程序,该安装程序现在已经相当陈旧,并被RubyInstaller取代。RubyInstaller for 1.8.7可能是目前应该使用的最低版本。我相信我使用的是一键式安装程序(他们应该从ruby-lang.org上删除)。我将尝试升级到1.9.1,即使这不是我们的生产环境。JRuby的速度明显更快吗?我想他们计划在rubyinstaller“走出RC”后删除它。你使用的是远程数据库吗?不,只使用本地数据库。我还没有在睡梦中用rails尝试过JRuby——我的预感是它会像MRI一样慢。我对1.8.7的回答与对1.8.6的回答相同(对于这一点,1.9.x通常更差),尽管1.9.2在这方面似乎要比1.9.1[1]快一点。[1]