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

自动测试性能下降

  •  1
  • Olly  · 技术社区  · 16 年前

    我一直在使用 ZenTest 在我的Rails项目中运行所有的测试已经有好几年了,而且一直都很简单。然而,在我的Mac上,运行所有测试突然花费了3倍的时间。我们有1219个测试,在过去的一年里,它平均在300秒左右运行所有的测试。不过,现在需要将近900秒:

    Finished in 861.3578 seconds.
    
    1219 tests, 8167 assertions, 0 failures, 0 errors
    ==============================================================================
    

    我想不出任何理由来解释为什么会出现这种减速。我尝试更新到最新的gem版本,减少测试的日志输出,并重新生成测试数据库,但都没有用。有人能提出提高性能的方法吗?

    3 回复  |  直到 16 年前
        1
  •  4
  •   Morendil    16 年前

    当你排除了不可能的情况后,不管剩下什么都不可能,一定是解释:如果不是gem,就不是数据库(你检查索引了吗?)不是你的Mac,不是Rails(你最近升级过),是代码吗?

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

    如果您现在找不到任何东西,请对代码进行分析,以了解时间的去向。这将比仅仅记住你所做的改变(在这种情况下,这几乎总是解释的)要慢,但可能会指向正确的方向。

    性能问题可能令人沮丧,因为任何数量的因素都会产生影响。数据库上缺少索引。网络延迟。内存不足。不要放弃,保持 Tilton's Law 铭记在心。

        2
  •  2
  •   Sam Saffron James Allen    16 年前

    你真的会在这里做更多的家庭作业,我怀疑这是天顶测试:

    1. 当你的代码在几个月前非常好和漂亮的时候,拿一个版本。运行所有测试,将所有测试持续时间输出到电子表格或其他内容。

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

    3. 如果持续时间相同,则数据库配置或计算机配置的某些内容已更改

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

    5. 如果一些新的测试真的很慢,修复它们。

        3
  •  0
  •   Olly    15 年前

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

    1. 插入OSX Leopard CD
    2. 彻底重新安装豹从零开始
    3. 重新安装ruby、mysql等

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

    我不知道发生了什么,但在某个地方,这显然是一个MySQL问题。

    推荐文章