代码之家  ›  专栏  ›  技术社区  ›  aronchick

Rake测试在Windows中非常慢

  •  11
  • aronchick  · 技术社区  · 15 年前

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

    • Ruby脚本/服务器-30秒
    • Rake测试-45秒
    • 等。

    然而,当我跳到一个慢得多的Linux机器上时,它实际上是即时的。我已经检查了所有东西-没有运行重要的CPU进程,没有网络问题…等等。

    见鬼,只要有一个详细的输出告诉我它在哪里坏了,我会很高兴的。有什么建议吗?

    4 回复  |  直到 9 年前
        1
  •  7
  •   Gdeglin    15 年前

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

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

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

    最后一个选择是尝试在带有CentOS或其他Linux发行版的VMware中运行Rails。

        2
  •  2
  •   Andrew Grimm atk    14 年前

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

    使用rubyinstaller.org(1.8.6或1.9.x)可以使它更快——我建议使用1.8.6,因为1.9本身有一些慢。

    如果你想变得更具攻击性,你可以试试我的更快的脚本gem,它试图缓存heck,以摆脱基于需求的查找,从而加快速度。尽管如此,还是用Ruby的草稿版本来做吧:)

    不幸的是,JRuby的查找速度也不是很快。希望有一天这种情况会改变。在那之前,我知道的唯一方法就是加快速度。

    为了加快速度,你可以试试我的装载机速度器上部(帮助轨道在推土机中运行更快): https://github.com/rdp/faster_require 同时也检查在Doze工作的Spork,JRuby也工作得很好。

    -卢比

        3
  •  1
  •   lambinator    12 年前

    更新:部分原因是一些非常好的工作 Fenix 路易斯拉夫纳,鲁比1.9.3-p327是很多, 许多的 在Windows上更快。 rake 过去在1.9.3-p125上执行需要110+秒,现在在p327上执行需要约20秒。Rails终于可以在Windows上使用了!!

    使用 RubyInstaller 安装…

        4
  •  1
  •   Community CDub    8 年前

    我喜欢采用这种方法:

    slow rails stack

    以我为例

    finisher_hook: 22.463 sec
    

    那是罪魁祸首