Autor Zpráva
nethor
Profil
Zdravím, v jednom větším projektu řeším rychlost scriptu.
U každé stránky měřím, za jak dlouho se vygenerovala (rozdílem microtime() ), výsledek vypisuji v zápatí stránky.
Když se načítá dlouho, vkládám do scriptu vlastní metodu Log::Time() , která mi do logu vypíše čas generování, soubor a řádek místa, kde je volána.
Najdu místo s velkým rozdílem časů, až najdu metodu, která brzdí, ta je obvykle volá jinou metodu, ...atd až najdu místo, které je příčinou zpomalení.
Teno způsob (v podstatě extrapolace) je ale pracný a zdlouhavý. Věřím, že nejsem jediný, kdo tento problém řeší.
Neexistuje v PHP nějaká funkce nebo třída, která k ladění rychlosti slouží?
Kcko
Profil
nethor:
Debugger, Profiler.
Keeehi
Profil
xdebug.org/docs/profiler
nethor
Profil
Zapomněl jsem napsat, že mi aplikace běží na hostingu, takže na server nemohu žádné rozšíření instalovat.
Měl jsem na mysli něco, co je už součástí PHP7, jen o tom nevím...
Keeehi
Profil
nethor:
Je teoreticky možné, že xdebug je na serveru nainstalovaný. Zjistíš to z výpisu phpinfo(). Spíš bych ho tam ale nečekal, na serveru nemá co dělat.

Nicméně nainstaluj si svůj vlastní webserver na tvůj počítač. Když píšeš, že je to velký projekt, tak už dávno si to měl udělat. Upravovat soubory u sebe a neustále je nahrávat na server, abys zjistil, zda fungují správně, to je hrozný opruz. Když něco rozbiješ, můžeš tím sestřelil i zbytek aplikace. Návštěvníkům tedy stránky nepůjdou. Nemůžeš použít debugovací nástroje, jako je třeba tento. No, důvodů je spousta, proč se pro vývoj používají webservery v počítači vývojáře.
N71
Profil *
Případně se dá běžně využít webserver, který je součástí PHP. Pro testování tak odpadá většina zbytečné konfigurace.
nethor
Profil
Na localu samozřejmě server mám (Xampp), ale jde o to, že stěhuju produkční web na nový server, s vyšším výkonem, prostorem atd..
Některé výpočty jsou na něm zřetelně rychlejší (o >50%), ale některé části zase (třeba až 3x) pomalejší. Takže hledám, kde co to brzdí.
Keeehi
Profil
nethor:
Pokud chceš testovat výkon na určitém stroji, musíš mít profiler nainstalovaný tam. To jinak prostě nejde.
Ovšem profiler je dobrý i na lokálním stroji. Sice ti neřekne, jak dlouhou běží jednotlivé části kódu (tedy řekne, ale je to vysledek na tvém počítači a ne ze serveru) ale řekne ti, které části se nejčastěji spouštějí. Časté spouštění většinou znamená i dlouhý čas. Tím zjistíš, na jaké části by ses měl zaměřit. No a pokid nemůžeš na server žádný profiler nainstalovat, zbývá ti pak už jen ta interpolace. Ale už jen z menší části než skrz celý projekt.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0