Si corretta al 100% ... che è se si sta ancora utilizzando PHP versione precedente di PHP
come PHP 5.1.2
-PHP 5.2.2
in più risentono versione stabile di PHP
sono la stessa cosa e md5
run leggermente più veloce in alcune versioni
Here is a simple test in most PHP version
è inoltre necessario notare che il metodo punto di riferimento è sbagliato e cambiando posizione influisce sul risultato ... Questo è come ottenere un risultato migliore.
set_time_limit(0);
echo "<pre>";
function m1($total) {
for($i = 0; $i < $total; $i ++)
hash('md5', 'string');
}
function m2($total) {
for($i = 0; $i < $total; $i ++)
md5('string');
}
function m3($total) {
for($i = 0; $i < $total; $i ++)
hash('sha1', 'string');
}
function m4($total) {
for($i = 0; $i < $total; $i ++)
sha1('string');
}
function m5($total) {
for($i = 0; $i < $total; $i ++)
hash('md5', $i);
}
function m6($total) {
for($i = 0; $i < $total; $i ++)
md5($i);
}
function m7($total) {
for($i = 0; $i < $total; $i ++)
hash('sha1', $i);
}
function m8($total) {
for($i = 0; $i < $total; $i ++)
sha1($i);
}
$result = array(
'm1' => 0,
'm2' => 0,
'm3' => 0,
'm4' => 0,
'm5' => 0,
'm6' => 0,
'm7' => 0,
'm8' => 0
);
$total = 10000;
for($i = 0; $i < 100; ++ $i) {
foreach (array_keys($result) as $key) {
$alpha = microtime(true);
$key($total);
$result[$key] += microtime(true) - $alpha;
}
}
echo '<pre>';
echo "Single Run\n";
print_r($result);
echo '</pre>';
uscita
Single Run
Array
(
[m1] => 0.58715152740479 <--- hash/md5/string
[m2] => 0.41520881652832 <--- md5/string
[m3] => 0.79592990875244 <--- hash/sha1/string
[m4] => 0.61766123771667 <--- sha1/string
[m5] => 0.67594528198242 <--- hash/md5/$i
[m6] => 0.51757597923279 <--- md5/$i
[m7] => 0.90692067146301 <--- hash/sha1/$i
[m8] => 0.74792814254761 <--- sha1/$i
)
Live Test
Può essere perché 'md5()' è un alias di 'hash ("MD5",)' e quindi lo rallenta. Non citarmi su questo comunque. –
Si noti che i dati utilizzati nel collegamento condiviso sono molto piccoli - se si calcola l'md5 di un file di grandi dimensioni, la differenza dovrebbe essere molto piccola. –
Come C. ha detto di provarlo su dati più grandi. Ogni alias in php impiega più tempo perché il parser esegue la ricerca due volte. La prima volta cerca l'alias e quindi la funzione originale. È un problema di php, ma permette di non specificare il tipo di dati. La stessa cosa che hai per il cast di valore. (int) sarà molto più veloce di intval(). Non è un alias, ma la differenza di tempo di esecuzione è abbastanza grande. – imclickingmaniac