Optimalizace rychlosti načítání
- Terka04
- Člen | 44
Hezkou středu přeji,
včera jsem rozchodila XHprof profiler skrze lokální web (xhgui) zobrazující
logy, protože jsem řešila rychlost načítání. Přišla jsem na pár
zajímavých bottlenecků, které bych ráda vyřešila, ale zatím se mi to
nedaří.
- Když smažu cache, tak první načtení trvá 2–5 sekund – chápu.
- Další načtení jsou už kolem 350 ms – tohle by to dělat nemělo.
Když se podívám na block time, tak se vždy na prvních příčkách objeví (trvá nejdéle):
- Nette\DI\DependencyChecker::isExpired
- Nette\Bridges\DatabaseTracy\ConnectionPanel::logQuery
- Nette\Database\ResultSet::__construct
- Nette\Loaders\RobotLoader::tryLoad
- Latte\Engine::acquireLock
- Composer\Autoload\includeFile
- Nette\ComponentModel\Component::__get
něco, něco, a pak moje Presentery, které se zdají být celkem OK.
- beforeRender trvá 5000 µs
- startup trvá 1000 µs
- renderDefault 5 µs
Testuji to na lokálním PC s XAMPP a MySQL, tedy ten constructor databáze asi chápu, ale ten dependency checker? Na internetu jsem našla, že už to někdo řešil, ale nenašla jsem odpověď. Dále měl někdo problém v Dockeru, ale to nebyl můj případ – nepoužívám Docker.
Zkusila bych Blackfire, ale ten už ve free verzi nemají, co jsem koukala, proto jsem sáhla po Xhgui.
Mohl by mě někdo šťouchnout, po čem jít? Moc děkuji. :)
- Marek Bartoš
- Nette Blogger | 1280
composer se při deployi dá optimalizovat pomocí
"composer install --no-interaction --no-progress --no-dev --classmap-authoritative"
(smazat dev závislosti + optimalizovat autoloader přes classmap)
Nette\DI\DependencyChecker::isExpired
se ti ukazuje nejspíš
proto, že jsi v debug módu, v produkčním se toto neděje
Stejně tak zapnutý debug mód přidává overhead díky debug módu Tracy
acquireLock + logQuery se objeví nejspíš kvůli pomalému disku
Editoval Marek Bartoš (5. 10. 2022 13:40)