| 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: 17 let
|
|||
0