Замедление производительности автотеста - PullRequest
1 голос
/ 04 февраля 2009

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

Finished in 861.3578 seconds.

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

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

Ответы [ 3 ]

4 голосов
/ 04 февраля 2009

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

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

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

Проблемы с производительностью могут вызывать разочарование, поскольку любое количество факторов может оказать влияние. Отсутствует индекс в БД. Сетевая задержка. Низкие условия памяти. Не сдавайтесь, помните Закон Тилтона .

2 голосов
/ 04 февраля 2009

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

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

  2. Получите текущую версию базы кода и повторите процедуру в 1)

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

  4. Если все тесты в среднем медленнее, это сложно диагностировать, но может показаться, что в каждом тесте выполняется новый фрагмент кода.

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

0 голосов
/ 20 мая 2009

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

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

После этого тесты запускаются менее чем за 260 секунд.

Понятия не имею, что произошло, но, похоже, это где-то проблема MySQL.

...