【问题标题】:Autotest performance slowdown自动测试性能下降
【发布时间】:2009-02-03 22:32:01
【问题描述】:

多年来,我一直在使用ZenTest 来运行我的 Rails 项目中的所有测试,而且它总是很简单。但是,在我的 Mac 上,运行所有测试的时间突然增加了 3 倍。我们有 1219 次测试,在过去的一年里,它平均会在大约 300 秒内运行所有测试。但现在,它需要将近 900 秒:

Finished in 861.3578 seconds.

1219 tests, 8167 assertions, 0 failures, 0 errors
==============================================================================

我想不出为什么会出现这种放缓的任何原因。我尝试更新到最新的 gem 版本,减少测试的日志输出并重新生成测试数据库,但都无济于事。任何人都可以提出提高性能的方法吗?

【问题讨论】:

    标签: ruby-on-rails autotest zentest


    【解决方案1】:

    当你消除了不可能的事情时,无论剩下的多么不可能,都必须是解释:如果它不是 gem,不是数据库(你检查索引了吗?),不是你的 Mac,不是 Rails(你最近升级了) ,会不会是代码?

    我会检查 git/svn/cvs 日志以了解您最近所做的一些更改,并寻找任何可能的内容,例如会减慢查询速度。

    如果您无法立即找到任何内容,请分析代码以查看时间的去向。这将比仅仅记住您所做的更改要慢(在这种情况下这几乎总是被证明是解释),但可能会为您指明正确的方向。

    性能问题可能会令人沮丧,因为许多因素都会产生影响。数据库中缺少索引。网络延迟。内存不足的情况。不要放弃,牢记Tilton's Law

    【讨论】:

    • 这是一个很好的建议,我会遵循。但是,我担心的原因是测试在我的同事机器上运行良好,这台机器的规格较低,这表明它是我的 Mac。但我想不出有什么改变!
    • 我能理解。我记得有很多次我遇到过这个问题——我的代码行为不同,不记得改变了什么。如果您无法立即找到任何内容,请分析代码以查看时间的去向。
    【解决方案2】:

    你真的要在这里多做一点功课,我怀疑它的 ZenTest:

    1. 当几个月前的东西很棒而且花花公子时,获取您的代码版本。运行所有测试,将所有测试持续时间输出到电子表格或其他东西。

    2. 获取您的代码库的当前版本并重复 1) 中的过程

    3. 如果持续时间相同,说明您的数据库配置或机器配置发生了变化

    4. 如果所有测试的平均速度都较慢,这很难诊断,但似乎每个测试中都有一段新代码在运行。

    5. 如果少数新测试真的很慢,请修复它们。

    【讨论】:

      【解决方案3】:

      所以我终于解决了这个问题。以下是三个简单步骤的方法:

      1. 插入 OSX Leopard CD
      2. 从头开始完全重新安装 Leopard
      3. 重新安装 Ruby、MySQL 等

      完成此操作后,测试将在 260 秒内运行。

      我不知道发生了什么,但肯定是某个地方的 MySQL 问题。

      【讨论】:

        猜你喜欢
        • 2018-11-16
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多