2009-02-03 4 views
1

Я использовал ZenTest для запуска всех тестов в проекте Rails в течение многих лет, и это всегда было довольно неожиданно. Тем не менее, на моем Mac это внезапно начало занимать в 3 раза больше времени, чтобы запустить все тесты. У нас 1219 тестов, и в прошлом году он проведет все тесты примерно в среднем за 300 секунд. Теперь, хотя, это занимает почти 900 секунд:Ускорение производительности автотеста

Finished in 861.3578 seconds. 

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

Я не могу думать о какой-либо причине, почему бы произойти такое замедление. Я пробовал обновление до последней версии gem, уменьшая выход журнала из тестов и регенерируя тестовую базу данных, но безрезультатно. Может ли кто-нибудь предложить способ улучшить производительность?

ответ

0

Так что я, наконец, решил это. Вот как в три простых шага:

  1. Вставьте OSX Leopard CD
  2. полностью переустановить Leopard с нуля
  3. Переустановка Ruby, MySQL и т.д.

После этого испытания выполняются в соответствии с 260 секунд.

Я понятия не имею, что произошло, но это, безусловно, было проблемой MySQL.

4

Когда вы устранили невозможное, все, что остается, каким бы невероятным оно ни было, должно быть объяснением: если это не драгоценный камень, а не база данных (вы проверяли индексы?), А не ваш Mac, а не Rails (недавно вы обновили), может ли это быть кодом?

Я проверил журналы git/svn/cvs для нескольких последних изменений, которые вы сделали, и найдите все, что может быть, например, замедление запросов.

Если вы не можете найти что-нибудь сразу, прокомментируйте код, чтобы узнать, куда идет время. Это будет медленнее, чем просто запоминание того, что вы изменили (что почти всегда оказывается объяснением в подобной ситуации), но может указывать на вас в правильном направлении.

Проблемы с производительностью могут быть разочаровывающими, поскольку любое количество факторов может оказать влияние. Отсутствующий индекс в БД. Латентность сети. Низкие условия памяти. Не сдавайтесь, держите Tilton's Law в виду.

+0

Это хороший совет, за которым я последую. Тем не менее, моя причина для беспокойства заключается в том, что тесты отлично работают на моей коллеге, которая имеет более низкую спецификацию, что указывает на то, что это мой Mac. Но я не могу думать ни о чем, что изменилось! – Olly

+0

Я могу рассказать. Я помню любое количество раз, когда у меня была эта проблема - различное поведение моего кода, я не мог ничего изменить. Если вы не можете найти что-нибудь сразу, прокомментируйте код, чтобы узнать, куда идет время. – Morendil

2

Вы действительно собираетесь сделать немного больше домашних заданий здесь, я сомневаюсь в ее ZenTest:

  1. захватить версию вашего кода, когда материал был большой и денди несколько месяцев назад. Запустите все тесты, выведите всю тестовую продолжительность в таблицу или что-то еще.

  2. Grab текущая версия вашего кода базы и повторить процесс в 1)

  3. Если Длительности то же самое, что-то о конфигурации DB или машины конфигурации изменилась

  4. Если все тесты в среднем медленнее, это трудно диагностировать, но, похоже, в каждом тесте есть новый бит кода.

  5. Если несколько новых тестов очень медленные, исправьте их.

 Смежные вопросы

  • Нет связанных вопросов^_^