Смягчение миграций ускорило тесты - и не только в части настройки базы данных
Я боролся с медленными тестами - очень медленными тестами. Я подумал, что это, вероятно, связано с неэффективной настройкой данных в моих тестах. Я сделал несколько замеров времени "до", а затем, по несвязанным причинам, удалил все свои миграции. Затем я снова запустил свои тесты. Я не изменил ничего в коде тестов - только миграции - но тесты стали значительно быстрее. Я ожидал некоторого улучшения в количестве установок базы данных, о котором сообщается при --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с | 0с | 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 |