Autor | Zpráva | ||
---|---|---|---|
Casper Profil |
#1 · Zasláno: 5. 9. 2010, 10:36:59
Dobrý den, někde jsem četl, že použití ternárního operátoru je o něco rychlejší než využití podmínky if. Oblíbil jsem si jej natolik, že ho cpu téměř všude. Ovšem nevím, zda tak scriptu skutečně pomáhám, zdali je skutečně rychlejší než použití klasického ifu. Natož když používám dva až tři vnořené ternární operátory. Neví někdo jak je to s rychlostí takovýchto podmínek? Nechci zbytečně zatěžovat script.
Předem díky za odpovědi... Pro méně znalé: ternární operátor. |
||
panther Profil |
#2 · Zasláno: 5. 9. 2010, 10:38:40
Casper:
„Neví někdo jak je to s rychlostí takovýchto podmínek?“ je problém si to změřit na několikatisícerém opakování? Časy uvidíš, porovnat je snad zvládneš (i odečíst, jak moc velký rozdíl tam je). |
||
Casper Profil |
#3 · Zasláno: 5. 9. 2010, 10:45:09
To bych asi mohl :) Lenost je strašná věc, člověk se radši zeptá, než udělá... Pochopil jsem, jdu to napravit a hodím sem výsledek, aby to aspoň někomu k něčemu bylo ;)
|
||
Alphard Profil |
#4 · Zasláno: 5. 9. 2010, 10:50:46 · Upravil/a: Alphard
Casper:
Můžete to být pomalejší, ale řešit takovouto optimalizaci má smysl snad jen v rozsáhlých cyklech, hodně dlouhých proměnných a podobných extrémech. Běžně se myslím používá to, co je přehlednější. Vzpomněl jsem si (a dokonce i našel) na starý článek http://latrine.dgx.cz/php-puvab-optimalizace-rychlosti (byl psán pro pro PHP 4, nevím jestli se něco změnilo, spíš ne). |
||
Casper Profil |
#5 · Zasláno: 5. 9. 2010, 11:09:01 · Upravil/a: Casper
Alphard Děkuji za odpověď, poučný článek.
I při mém testování desítimiliontého opakování desítinásobného vnoření podmínky byl ternární operátor cca o 1,5 sekundy pomalejší. Skript mu trval kolem osmi sekund. |
||
kolemjdouci Profil * |
#6 · Zasláno: 5. 9. 2010, 12:35:06
Prosel jsem ten odkaz a docela jsem nepochopil tu optimalizaci u prispevku c.3 (Davida Grundla). Proc je nepouziti reference rychlejsi?
|
||
tiso Profil |
#7 · Zasláno: 5. 9. 2010, 13:00:29
kolemjdouci: pretože sa nevyužije… Priradenie premennej do inej nijak pôvodnú nevplyvní (ani nemôže), takže referencia je zbytočná.
|
||
DoubleThink Profil * |
#8 · Zasláno: 5. 9. 2010, 14:02:31
Casper:
Na 99.9% nejsi v situaci, kdy bys musel přemýšlet nad rychlostí jazykových konstrukcí PHP. Jinými slovy, kvůli zisku setiny sekundy píšeš nepřehledné prasácké kódy. |
||
kolemjdouci Profil * |
#9 · Zasláno: 5. 9. 2010, 22:35:45
tiso:
Stejně nechápu. Mohl bys prosím polopatě? |
||
Davex Profil |
#10 · Zasláno: 5. 9. 2010, 23:03:16
kolemjdouci:
Viz http://latrine.dgx.cz/php-cerna-magie-optimalizace |
||
kolemjdouci Profil * |
#11 · Zasláno: 5. 9. 2010, 23:48:39
Díky. Jak php jádro naloží s tímto?
public function hodnota() { return $this->ulozenahodnota; } Provede se replikace hodnoty nebo se jen inkrementuje refcount? |
||
Nox Profil |
#12 · Zasláno: 6. 9. 2010, 08:51:11
však to máš v článku - http://php.net/debug_zval_dump použij a uvidíš
|
||
kolemjdouci Profil * |
#13 · Zasláno: 6. 9. 2010, 21:27:21
Tak se jen inkrementuje. Zkoušel jsem to na pár funkcí co jsem porůznu našel přes google. Zkoušel jsem return bez reference a s referencí a chovalo se to stejně. Jaký má teda smysl tato konstrukce: public function &funkce(.... ?
|
||
Časová prodleva: 14 let
|
0