自动测试性能下降
我一直在使用ZenTest在我的Rails项目中运行所有测试多年,它一直很蹩脚。但是,在我的Mac上,它突然开始花费3倍的时间来运行所有测试。我们有1219次测试,在过去的一年里,它会平均在大约300秒内运行所有测试。尽管如此,现在它采取约900秒时:自动测试性能下降
Finished in 861.3578 seconds.
1219 tests, 8167 assertions, 0 failures, 0 errors
==============================================================================
我想不出任何理由为什么会发生这样的放缓。我试过更新到最新的gem版本,减少了测试的日志输出和重新生成测试数据库,都无济于事。任何人都可以提出一种方法来提高性能?
所以我终于解决了这个问题。下面是三个简单的步骤:
- 插入OSX Leopard的CD
- 完全从头
- 重新安装的Ruby中,MySQL等
重新安装Leopard的做这个测试下260秒运行后。
我不知道发生了什么,但它肯定似乎是某个地方的MySQL问题。
当你消除了不可能的东西时,无论如何,不管可能性如何,一定是解释:如果它不是宝石,不是数据库(你检查索引?),而不是你的Mac,而不是Rails ),它可以是代码吗?
我会检查git/svn/cvs日志以了解您所做的最近几次更改,并查找可能会发生的任何事情。正在放慢查询速度。
如果您无法立即找到任何内容,请查看代码以查看时间正在发生的变化。这会比仅仅记住你改变的东西慢得多(这几乎总是成为这种情况的解释),但是可能会指向你正确的方向。
性能问题可能令人沮丧,因为任何数量的因素都可能产生影响。 DB上缺少索引。网络延迟。低内存条件。不要放弃,记住Tilton's Law。
你真的要在这里做一点点功课,我怀疑它的ZenTest:
抢版本代码的东西时,是伟大的,很正常,在几个月前。运行所有测试,将所有测试持续时间输出到电子表格或其他东西。
抓住当前版本的代码库,并在1重复这个过程)
如果持续时间是相同的,一些关于你的数据库配置或机器配置已经改变
如果所有测试平均而言,这是一个很难诊断的问题,但似乎在每个测试中都有一些新的代码在运行。
如果少数新测试真的很慢,请修复它们。
这是我会遵循的好建议。然而,我担心的是,测试运行良好,我的同事机器规格较低,这表明它是我的Mac。但我想不出任何变化! – Olly 2009-02-04 11:20:13