Autor Zpráva
Šuter
Profil
Dobrý deň,

V poslednej dobe som sa začal zaujímať o zrýchlenie php kódu.
Našiel som pár rád na webe:
1) používat include ./web/... miesto include web/...
2) Niekde som videl že switch je rýchlejšie ako else if
3) Videl som, že rýchlejšie je keď určím v html obrázku jeho rozmery

Neviem čo je na tom pravdy, keď máte aj vy nejaké finty, tak sem s nimi :)

Ďakujem
Alphard
Profil
To, co řešíte, je naprosto zanedbatelné. Zpravidla jsou největší brzdou SQL dotazy.
Jan Tvrdík
Profil
Šuter:
Jak píše Alphard, to, co řešíš, jsou převážně blbosti. Reálný dopad na výkon mají především IO operace. V případě PHP je to především vkládání souborů (include, require), komunikace s databází, práce se soubory a komunikace se vzdáleným serverem (např. file_get_contents). Kromě toho je ještě potřeba dávat si pozor na cykly (resp. rekurzi), protože rychlá operace provedená 10 tisíc krát se stává pomalou.

Reálné zrychlení se provádí zapnutím opcode cache (APC, Zend Optimizer...) a použitím paměťového key-value úložiště (APC, Redis, Memcache...).
Šuter
Profil
Ďakujem.
A čo re rýchlejšie 100-krát else if alebo cyklus, ktorý ich vypíše?
Amunak
Profil
3) nijak nesouvisí s PHP, ale zrychluje to vykreslení stránky u uživatele a stránka "neposkakuje", protože se při výpočtech vykreslení stránky nemusí čekat, než se načte obrázek, aby se zjistily jeho reálné rozměry. Prostě se vezme hodnota z HTML/CSS a vykreslí se to rovnou, obrázek se donačte až potom.
juriad
Profil
Šuter:
To je irelevantní otázka, když budeš mrtvej. Zabije tě programátor, který projekt po tobě převezme. Nehoň se nanosekundama a zkus se zamyslet.
Velké projekty (wordpress, nette) jsou úspěšné mimo jiné z důvodu, že jsou přehledné.
Joker
Profil
Šuter:
Jak psali kolegové, uvedené věci je zbytečné řešit.
První důležitá věc: Dneska rychlost kódu obvykle není na prvním místě. Určitě ne na úkor přehlednosti a udržovatelnosti.
Obvykle v krajním případě vyjde levněji zaplatit víc paměti a výkonnější server, než čas programátora strávený opravami chyb a luštěním nesrozumitelného kódu.

Jiná věc je, že tihle optimalizátoři řešíci věci jako rychlost jednoduchých a složených uvozovek jsou většinou lidi, kteří stráví dlouhé hodiny nad debatami o rozdílu <0,001 ms mezi dvěma konstrukcemi, přičemž klidně propálí 1500 ms tím, že výběr jednoho databázového záznamu s určitou hodnotou primárního klíče řeší přes SELECT * FROM tabulka + cyklus.

Takže v první řadě bych se naučil pořádně a správně programovat. Dát if kde má být if, dát switch kde má být switch, cyklus kam patří cyklus, atd.
Místo „Co je rychlejší?“ se ptát „Co se nejlépe hodí pro danou situaci?“ (což shodou okolností bývá často i výkonově dobré řešení).
Ve druhé řadě se naučil optimalizovat nejčastější brzdy, v našem případě asi hlavně databázové dotazy a cykly (a zejména kombinaci obojího).
A to je asi tak všechno, co bych řešil předběžně. Další optimalizace až ve chvíli, kdy se ukáže, že jsou opravdu potřeba. A hlavně kdy můžu reálně změřit, co mi která z nich přinese.
Šuter
Profil
Ďakujem.

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: