Смягчение миграций ускорило тесты - и не только в части настройки базы данных

Я боролся с медленными тестами - очень медленными тестами. Я подумал, что это, вероятно, связано с неэффективной настройкой данных в моих тестах. Я сделал несколько замеров времени "до", а затем, по несвязанным причинам, удалил все свои миграции. Затем я снова запустил свои тесты. Я не изменил ничего в коде тестов - только миграции - но тесты стали значительно быстрее. Я ожидал некоторого улучшения в количестве установок базы данных, о котором сообщается при --timing, но я не ожидал большого изменения в скорости выполнения самих тестов. Может ли кто-нибудь предложить объяснение этому?

Before

Метод Установка БД Снос БД Выполнение теста Всего затраченное время
MySQL 124.2s 3.6s 794.5s 925.0s
MySQL keepdb 1 123.8s 0s 742.5s 869.2s
MySQL keepdb 2 4.3s 0s 742.2s 759.1s
SQLite run 1 4.9с 886.7s 896.3s
SQLite run 2 4.3s 0s 778.1s 785.2s

После подавления миграции

Метод Установка БД Снос БД Выполнение теста Всего затраченное время
MySQL 107.8s 6.5s 200.0s 319.5s
MySQL 109.3s 6.9s 205.3s 326.4s
SQLite run 1 34.3s 0s 128.2s 166.9s
SQLite run 2 1.5s 0s 124.6s 130.3s

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

Прямо перед сквошем

Method DB setup DB teardown Running Test Total elapsed
MySQL 191.2s 8.1s 207.4s 415.5s

Код из того же периода, что и измерения "до" в моем вопросе

Method DB setup DB teardown Running Test Total elapsed
MySQL 183.8s 6.5s 190.5s 386.4s
Вернуться на верх