1

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

Finished in 861.3578 seconds.

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

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

4

3 回答 3

4

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

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

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

性能问题可能会令人沮丧,因为任何数量的因素都会产生影响。数据库中缺少索引。网络延迟。内存不足的情况。不要放弃,记住蒂尔顿定律

于 2009-02-03T23:18:33.737 回答
2

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

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

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

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

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

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

于 2009-02-04T05:23:53.530 回答
0

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

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

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

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

于 2009-05-20T12:42:02.137 回答