Nette Framework – rychlost generovania stranky
- Takeshi
- Člen | 596
Zdravim,
co by ste urobili/zmenili keby ste chceli co najpresnejsie zaznamenat rychlost generovania stranky. (Nevyznam sa) len hadam: vypnut niektore prebytocne funkcie .. (napriklad DebugBar) alebo ine nastavenia bez ktorych by sa stranka obysla … (neviem ci ten Debug bar spomali (aj ked minimalne) stranku)
- bojovyletoun
- Člen | 667
Odpověď nebude krátká. Záleží taky, zda na rychlosti záleží vždy nebo jen na produkčním servru(pak některé problémy odpadnou). Lze to rozdělit na 3 skupiny(nejvíc asi bude zajímat ty poslední). Taky říkám, že poznatky platí pro můj PC (Apache 2.4, Win7, PHP 5.2,5.3,5.4).
- prohlížeč
- zde pomůže vypnout zbytečné panely debugbaru, neboť když mám třeba zapnutý ContainerPanel, tak prohlížeč po stažení stránky ji o poznání (0.5s) vykresluje déle.
- nette
rozdíl mezi minifik verzí a normální: obecně bych řekl, že je důležité vyzkoušet v dané situaci obojí a pak to zhodnotit. Navíc čas v debugbaru se nemusí shodovat se skutečností, neboť v případě minif. verze se debugger inicializuje až po načtení celého 1MB souboru nette.min.php a následné Debugger::init.
- PHP
- php open_basedir! je li aktivní, brutálně zpomalí načítání velkého množstí souborů a to až na sekundy. A vypnutý basedir znamená, že operace se soubory nejsou omezené! Na to pozor.
- načtený((nemluvě o zapnutém)) modul xdebug Debugger zpomaluje o běh scriptu o nějaká procenta
- opcode cache snižují podstatně čas. Př Wincache odhadem na polovinu. Občas je ale problém najít správnou verzi (jinak tě čekají nejruznější pády a chybové hlášky) a zprovoznit ji
- server
- já mohu mluvit pouze za apache.
- roli hraje taky použítí modulu/(fast(CGI). Opět bych nerad něco konkrétního, je třeba to vyzkoušet.
- záleží i na zatíženosti serveru. Věci se budou mít jinak na ostrém serveru s návštěvností než na
- konfigurace Apache. ZDe jsou některá moje nastavení
- ještě jedna věc- přidat do hosts localhosta
domácí testťáku.
#HostnameLookups On
UseCanonicalName Off
#slow
ServerRoot c:/web
#KeepAlive Off
#KeepAliveTimeout 2
#EnableMMAP off
#EnableSendfile off
AcceptFilter http none
# v minulých verzích Accepfilter se jmenuje Win32DisableAcceptEx
To je zatím vše ,co mě napadlo.
PS: jako benchmark používám Kdyby sandbox, který se načte nejrychleji za
100ms, nejpomaleji
- Nette se snaží právě pro tento případ použít $_SERVER[REQUEST_TIME_FLOAT], ale určitě ně vždy je definováné.
- Takeshi
- Člen | 596
bojovyletoun napsal(a):
Dakujem za rozsiahlu odpoved. Mam jednu otazku, ktora suvisi s Nette len okrajovo …
Su vytvorene rozsiahle stranky (jedna stranka v roznych jazykoch) (pre nejake firmy) .. povedzme ze jena je vytvorena v Nette, druha v cistom PHP a tretia v inom frameworku. Ako najobjektivnejsie merat ich rychlost
Editoval Takeshi (13. 6. 2012 19:43)
- bojovyletoun
- Člen | 667
Nějaký specializovaný benchmark. Ale takovýhle věci jsem nikdy
nezkoušel. Jeden z nich je ab.exe v balíku apache…
dnes jsem při hledání něčeho jiného narazil na toto týkající se ab
PS OT: hned jsem si všiml podobnosti ikony memoryloadu v debugbaru a ikony v patičce pod článkem.
Editoval bojovyletoun (13. 6. 2012 19:59)
- Takeshi
- Člen | 596
bojovyletoun napsal(a):
neviem ako sa dostanem k tej aplikacii ab.exe
Opravte ma ak sa mylim, pripadne doplnte … pre co najobjektovnejsie meranie
rychlosti generovania webstranky v roznych jazykoch by som urobil
nasledovne:
Napriklad: …
→ vypnut vsetky vedlajsie funkcie, tkore ostatne jazyky nemaju (Nette ma
naviac napriklad DebugBar, kotry je mozne vypnut v Bootstrap.php pridanim
Nette\Diagnostics\Debugger::$bar = null;)
→ zalezi aj na tom ako su pisane funkcie (kolko maju medzier, komentarov) ⇒
z nette stranky som vycital, ze minifikovana verzia je iba ochudobnena
o medzeri a komentare) a je teda o cosi mensi
→ … dalej ma zatial nic viac nenapada
Editoval Takeshi (13. 6. 2012 20:21)
- Jan Tvrdík
- Nette guru | 2595
Takeshi wrote:
z nette stranky som vycital, ze minifikovana verzia je iba ochudobnena o medzeri a komentare
To je spíš drobnost. Z hlediska výkonu je podstatné především to, že je to celé v jednom souboru.
- Filip Procházka
- Moderator | 4668
@Takeshi: daleko víc tě zbrzdí načítání desítek souborů, než jednoho velkého. Navíc pokud máš nějakou opcode cache na serveru, tak se to načítá prakticky jen jednou.
- Patrik Votoček
- Člen | 2221
někde jsem viděl test a paradoxně v případě opcode je rychlejší více malých souborů než jeden velký.