RaDo
Priemer: 0.025474982261658  Standardna odchylka: 0.046278587294513

Johno
Priemer: 0.015259630680084  Standardna odchylka: 0.000426877124643

Zdroják:

<?php

/**
 * @author Jan "johno" Suchal
 */

class Timer {
    var 
$start;
    
    function 
start() {
        
$this->start $this->getMicrotime();
    }

    function 
stop() {
        return (
$this->getMicrotime() - $this->start);
    }

    function 
getMicrotime(){
        list(
$usec$sec) = explode(' 'microtime());
        return ((float)
$usec + (float)$sec);
    }
// end class Timer

function sqr($num) {
    return 
$num $num;
}

class 
Statistics {
    var 
$data;
    var 
$name;
    var 
$precision;

    function 
Statistics($name$precision 15) {
        
$this->name = &$name;
        
$this->precision = &$precision;
        
$this->data = array();
    }

    function 
reset() {
        
$this->data = array();
    }

    function 
add($item) {
        
$this->data[] = &$item;
    }

    function 
getResults() {
        
$sum 0;
        
$count count($this->data);
        if(!
$count) return;
        
        for(
$i 0$i $count$i++) {
            
$item = &$this->data[$i];
            
$sum += $item;
        }
        
$mean $sum $count;
        
        
$deviation 0;
        for(
$i 0$i $count$i++) {
            
$deviation += sqr($this->data[$i] - $mean);
        }
        
$deviation sqrt($deviation $count);

        
printf("%s\nPriemer: %.{$this->precision}f  Standardna odchylka: %.{$this->precision}f\n\n"$this->name$mean$deviation);
    }
// end class Statistics


function rado(&$data) {
    
$s '';
    foreach(
$data as $key => $val)
        
$s.=$key.'='.urlencode($val).'&';
    
$s substr($s0, -1);
}

function 
johno(&$data) {
    
$s null;
    foreach(
$data as $key => $val) {
        if(
$s !== null$s .= '&';
        
$s .= $key.'='.urlencode($val);
    }
}

$data = array(
    
'rado' => ' ano, to by mohlo být o 0.00000001 sekund rychlejší, pokud vu*bec, nicméne(, pak to bude c(ekat 10 sekund na curl_exec ;)',
    
'rado2' => ' vsadím se klidne( o $1, že to moje r(ešení je rozhodne( nejrychlejší :-)',
    
'dgx' => ' o rychlosti if($s !== null) bych si u PHP pr(íliš iluze nede(lal, pr(ece jen, je to skriptovaný jazyk. Ale líbí se mi Tvé uvažování ;-) Entita &amp; do kódu nepatr(í. Nahrazení & za &amp; se provádí až te(sne( pr(ed odesláním r(ete(zce na HTML výstup funkcí HTMLSpecialChars. V tomto pr(ípade( žádný HTML výstup není tr(eba, takže zu*stane u &)',
    
'johno' => ' No to asi ne. Jedine, že by bol substr() rýchlejší ako N krát vyhodnotenie podmienky if($s !== null), kde N je dlžka pol(a $data.Osobne si myslím, že pre N < 1000 to asi nenastane. :-)Inak máš tam ešte bug. $regbody asi malo byt( $s a tiež som si neni istý c(i & nemá byt( &amp;V každom prípade toto ladenie a c(ac(kanie je taký kóderský fetiš, ktorého sa odvtedy ako som sa stretol s asemblerom nemôžem zbavit(.',
    
'johno2' => 'Pre aké N(spomínané hore), Radku?',
    
'MiroslavNavratil' => 'Hehe, $1 ... Ten film znám, nevíš náhodou jak se menuje? ;)'
    
);
    
$timer = & new Timer();
$radoStats = & new Statistics('RaDo');
$johnoStats = & new Statistics('Johno');

$dummyStats = & new Statistics('dummy');
$dummyStats->add(1.5);
// pocet merani
$iterationsCount 50;

// pocet spusteni funkcie v jednom merani
$subIterationsCount 1000;

// php asi nieco alokuje pri prvom spustani funkcii lebo to hadzalo divne casy
// okaslal som to spustenim  'zahrievacich testov'

for($i 0$i 100$i++) {
    
$timer->start();
    
johno($data);
    
$johnoStats->add($timer->stop());

    
$timer->start();
    
rado($data);
    
$radoStats->add($timer->stop());
}

$johnoStats->reset();
$radoStats->reset();

for(
$i 0$i 100$i++) {
    
$timer->start();
    for(
$j 0$j $subIterationsCount$j++) {
        
johno($data);
    }
    
$johnoStats->add($timer->stop());
}


for(
$i 0$i $iterationsCount$i++) {
    
$timer->start();
    for(
$j 0$j $subIterationsCount$j++) {
        
rado($data);
    }
    
$radoStats->add($timer->stop());
}




echo 
'<pre>';
$radoStats->getResults();
$johnoStats->getResults();
echo 
'</pre><p>Zdroják:</p>';

highlight_file(__FILE__);
?>