Několik optimalizací pro rychlejší běh testů. Pro detaily vizte commit message u af6628367f.
Budu rád, pokud posdílíte data o rychlosti před a po, ať vím, jak moc je zrychlení závislé na HW. (Nejpíš se kouknu na rozptyl poměrů zrychlení a víc to zkoumat nebudu, protože stejně na rigorózní testování nemáme dostatek dat (konfera na sous? :-D).) Pokud neumíte časovat přes time, tak klidně testům předhoďte --timing, ono se to pro tyhle účely moc neliší…
Několik optimalizací pro rychlejší běh testů. Pro detaily vizte commit message u af6628367f546a6.
Budu rád, pokud posdílíte data o rychlosti před a po, ať vím, jak moc je zrychlení závislé na HW. (Nejpíš se kouknu na rozptyl poměrů zrychlení a víc to zkoumat nebudu, protože stejně na rigorózní testování nemáme dostatek dat (konfera na sous? :-D).) Pokud neumíte časovat přes `time`, tak klidně testům předhoďte `--timing`, ono se to pro tyhle účely moc neliší…
Při běžení testů nejdéle trvá namigrovat (prázdnou) databázi. Toto tento
krok přeskočí.
By default django pro testy používá in-memory SQLite3 databázi, která se
schovat přirozeně nedá. Používání souborů trvá déle (data níž), ale
další běhy už jsou rychlé.
Zatím nevím, jestli se někde nemůže omylem schovávat nějaký nežádoucí
stav, ale testy mi i opakovaně běží, takže se to asi nerozbíjí úplně
moc. Na první pohled je uložená databáze prázdná.
Pro produkci a CI bych klidně běžel testy od nuly, tam nevadí čekat pár
desítek sekund až jednotky minut na výsledek. Tato optimalizace je
důležitá jen pro lokální vývoj, kde je žádoucí mít testy co
nejrychlejší.
V .gitignore už přesně toto jméno souboru je. Nevím proč, ale možná to
tak bylo by default v některém dávném Djangu.
Data
---
Spouštěl jsem příkaz `time ./manage.py test [--keepdb] api`. Běhy byly
relativně konzistentní (±1 s) a trvaly u mě:
- In memory SQLite (default): 26 s
- První spuštění s db na disku (HDD): 44 s
- Následná spuštění: 7.7 s
Data jsou nejspíš zkreslena tím, že všechno je nejspíš nacachované v
systému, ale i tak je vidět zřetelné zrychlení.
Původní motivace: úplně triviální a nedatabázový test na starém
notebooku běžel kolem 3:14, což je zoufale nepoužitelné když si chci
napsat testy jako pomůcku pro vývoj.
Zdá se, že zrychlení se koná. Tak si někdo prosím prohlédněte změny, posuďte, jestli to dává smysl a skoro bych to mergenul spíš dřïv – změna je to vesměs triviální.
Zdá se, že zrychlení se koná. Tak si někdo prosím prohlédněte změny, posuďte, jestli to dává smysl a skoro bych to mergenul spíš dřïv – změna je to vesměs triviální.
Viz zprávu 3a1aade3a2bd215510b361eeb19c88fb2454628a: aby to umělo brát parametry a dalo se upravit, co chceme testovat. Zvlášť pokud jednou chceme mít spoustu testů, tak dává smysl si pustit jen jednu testovací sadu, když něco upravuji a kompletní testy pouštět až nakonec…
(A taky to jako milý bonus automaticky přidává podporu --help :-))
Viz zprávu 3a1aade3a2bd215510b361eeb19c88fb2454628a: aby to umělo brát parametry a dalo se upravit, co chceme testovat. Zvlášť pokud jednou chceme mít spoustu testů, tak dává smysl si pustit jen jednu testovací sadu, když něco upravuji a kompletní testy pouštět až nakonec…
(A taky to jako milý bonus automaticky přidává podporu `--help` :-))
Několik optimalizací pro rychlejší běh testů. Pro detaily vizte commit message u
af6628367f
.Budu rád, pokud posdílíte data o rychlosti před a po, ať vím, jak moc je zrychlení závislé na HW. (Nejpíš se kouknu na rozptyl poměrů zrychlení a víc to zkoumat nebudu, protože stejně na rigorózní testování nemáme dostatek dat (konfera na sous? :-D).) Pokud neumíte časovat přes
time
, tak klidně testům předhoďte--timing
, ono se to pro tyhle účely moc neliší…Zdá se, že zrychlení se koná. Tak si někdo prosím prohlédněte změny, posuďte, jestli to dává smysl a skoro bych to mergenul spíš dřïv – změna je to vesměs triviální.
trap - ERR # Testy nejspíš selžou, ale nechceme kolem toho dělat další chybovou hlášku.
./manage.py test -v2
./manage.py test -v2 --keepdb "$@"
Proč "$@"?
Viz zprávu 3a1aade3a2bd215510b361eeb19c88fb2454628a: aby to umělo brát parametry a dalo se upravit, co chceme testovat. Zvlášť pokud jednou chceme mít spoustu testů, tak dává smysl si pustit jen jednu testovací sadu, když něco upravuji a kompletní testy pouštět až nakonec…
(A taky to jako milý bonus automaticky přidává podporu
--help
:-))Za mě v pohodě :)
Merguji.
a6a57de3cf
into master 2 years agoa6a57de3cf
.