Optimalizace rychlosti načítání

Terka04
Člen | 44
+
0
-

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 | 1165
+
+1
-

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)