问题 Windows中的耙测试非常慢


为什么Ruby和Ruby on Rails(1.8.6 One Click Installer,本地数据库)在Windows上如此红润?

  • ruby脚本/服务器 - 30秒
  • 耙子测试 - 45秒
  • 等等

然而,当我弹出一个慢得多的linux盒子时,它几乎是瞬间完成的。我已经检查了所有内容 - 没有重要的CPU进程在运行,没有网络问题......等等。

哎呀,我很高兴看到一个冗长的输出,至少告诉我它在哪里崩溃。有什么建议么?


1893
2018-03-06 04:54


起源

你在使用远程数据库吗? - Nicolas Guillaume
不,仅使用本地数据库。 - aronchick


答案:


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

1.8.6是一个非常古老的红宝石版本。大约3年前发布。您应该强烈考虑升级到1.9(或至少1.8.7)。或者切换到JRuby。所有这些选项都可能会带来显着的性能提升。

1.8.7应与1.8.6完全兼容。 1.9有一个全新的解释器,运行速度提高了2.5倍(虽然它偶尔会在Windows上崩溃)。 JRuby可能是您理想的解决方案,因为您可以在1.8或1.9的兼容性中运行它并且它非常稳定,但它不支持具有C扩展的gem并且需要不同的数据库适配器。

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


7
2018-03-06 05:04



此外,OP可能正在使用One-Click安装程序,它现在已经很老了,并被RubyInstaller取代。用于1.8.7的RubyInstaller可能是此时应该使用的最小值。 - Stuart Ellis
我相信我 上午 使用一键安装程序(他们应该从ruby-lang.org中删除它)。即使那不是我们的生产环境,我也会尝试升级到1.9.1。 JRuby明显更快吗? - aronchick
我认为他们计划一旦rubyinstaller“来自RC”就删除它 - rogerdpack


原因是Windows中的文件统计速度非常慢,并且,由于Ruby是在Linux上编写的(并且针对Linux进行了优化),因此没有太多工作可以使其更快。

使用rubyinstaller.org(1.8.6或1.9.x)可以加快速度 - 我推荐1.8.6,因为1.9自身有一些减速。

如果你想要变得非常积极,你可以尝试我的faster_gem_script gem,它试图缓存基于需求的查找,从而加快速度。使用划痕版本的红宝石做,但:)

不幸的是,Jruby也因其超快的查找而闻名。希望有一天这种情况会改变。在那之前,我的fast_gem_script和faster_require是我知道尝试获得一些加速的唯一方法。

为了加速,您可以尝试我的装载机调速器上部(帮助导轨在打瞌睡时跑得更快): https://github.com/rdp/faster_require 还有结账的spork,在打瞌睡,jruby也很好。

-rp


2
2018-03-08 17:35



谢谢!怎么样1.8.7? - aronchick
BTW,这项工作有帮助吗? jira.codehaus.org/browse/JRUBY-4073 - aronchick
在打瞌睡的时候,我还没有试过jruby with rails - 我的预感是它和MRI一样慢。我对1.8.7和1.8.6的答案是相同的(并且1.9.x就此而言,通常更糟)虽然看起来1.9.2在这方面要比1.9.1快一点[1] ])。 [1] redmine.ruby-lang.org/issues/show/2723 - rogerdpack


更新:感谢(部分)一些非常出色的工作 菲尼克斯 作者:Luis Lavena,Ruby 1.9.3-p327很多, 许多 在Windows上更快。 rake 用于在1.9.3-p125上执行110秒以上,现在在p327上需要大约20秒。 Rails最终可以在Windows上使用!!

使用 RubyInstaller 安装..


1
2017-12-05 16:52





我喜欢这种方法:

慢铁栈

在我的情况下它

finisher_hook: 22.463 sec

那是罪魁祸首


1
2017-12-12 03:17