Autor | Zpráva | ||
---|---|---|---|
10011010 Profil * |
#1 · Zasláno: 31. 10. 2008, 14:38:35
ahoj,
co se týče rychlosti, je lepší rekurzivni funkce nebo spíše to udělat do cyklu? |
||
Měsíček Profil |
#2 · Zasláno: 31. 10. 2008, 14:56:27
Si udělej malý bench test, ne?
|
||
BetaCam Profil |
#3 · Zasláno: 31. 10. 2008, 15:26:43
10011010
Cyklus by měl být na 99% rychlejší. |
||
10011010 Profil * |
#4 · Zasláno: 31. 10. 2008, 17:01:59
Měsíček
nevím jak BetaCam děkuju |
||
Časová prodleva: 21 dní
|
|||
Zivan Profil * |
#5 · Zasláno: 21. 11. 2008, 16:13:04
Cyklus rychlejsi, ale casto o dost neprehlednejsi :)
|
||
Timy Profil |
#6 · Zasláno: 21. 11. 2008, 16:17:15
BetaCam
Z jakého důvodu? |
||
Timy Profil |
#7 · Zasláno: 21. 11. 2008, 16:36:50 · Upravil/a: Timy
Ale vychází to, alespoň v tomto příkladu:
function fac_cyklus($n) { $fac = 1; for($i = 1; $i <= $n; $i++) { $fac *= $i; } // echo "faktorial: ".$fac; } function fac_rek($n, $i) { if($n <= 1) { // echo $i; } else { fac_rek($n-1, $i *= $n); } } function fac_rek_2($n) { if($n <= 1) { return 1; } else { return $n * fac_rek_2($n - 1); } } // Cyklus $time = microtime(true); for($i=0; $i<10000; $i++) fac_cyklus(50); echo "<br>Cas cyklu: "; echo (microtime(true) - $time); // Rekurze $time = microtime(true); for($i=0; $i<10000; $i++) fac_rek(50, 1); echo "<br>Cas rekurze: "; echo (microtime(true) - $time); // Koncova rekurze $time = microtime(true); for($i=0; $i<10000; $i++) fac_rek_2(50); echo "<br>Cas koncove rekurze: "; echo (microtime(true) - $time); Výsledek je: Cas cyklu: 0.159802913666 Cas rekurze: 0.584051132202 Cas koncove rekurze: 0.435553073883 |
||
bohyn Profil |
#8 · Zasláno: 21. 11. 2008, 16:37:29
Timy
fce ma vlastni rezii na zavolani - kopirovani parametru v pameti + ulozeni aktualniho program counteru, a pri returnu zalsi kopirovani vysledku + zmena program counteru. A mozna jeste neco dalsiho |
||
Zivan Profil * |
#9 · Zasláno: 21. 11. 2008, 16:37:43
Hodne zjednodusene u kazdeho volani funkce a navratu z ni se provadi dalsi cinnosti okolo a ty pri cyklu nejsou.
|
||
bohyn Profil |
#10 · Zasláno: 21. 11. 2008, 16:39:40 · Upravil/a: bohyn
Timy
To co si napsal nema zadnou vypovidajici hodnotu, jake jsou ty fce? Edit: fce pridany sorry |
||
Timy Profil |
#11 · Zasláno: 21. 11. 2008, 16:41:25
bohyn
Já je tam zapomněl nakopírovat, už tam jsou. |
||
bohyn Profil |
#12 · Zasláno: 21. 11. 2008, 17:03:05
Timy
Hezky priklad |
||
Časová prodleva: 15 let
|
0