2010-11-01 12 views
6

I che possibile? per es. se voglio testare se str_replace() è più veloce di quello preg_replace()?Calcolare il tempo necessario per eseguire una determinata funzione

+0

possibile duplicato di [Esiste un riferimento per prestazioni/benchmark PHP per funzione (o per attività)?] (Http://stackoverflow.com/questions/2530610/does-a-php-per-function-o -per-task-performance-benchmark-reference-exist) –

+0

Spiacente, ignorare il duplicato, ho pensato che i servizi di riferimento fornissero il codice sorgente che usano, ma non lo fanno. –

+1

Vuoi un profiler come Zend_Debugger o XDebug per questo. Vedi http://stackoverflow.com/search?q=profile+php+script – Gordon

risposta

13

È possibile eseguire la stessa linea di 10.000 volte (o più) nello script, e utilizzare microtime(true) a dire il tempo impiegato:

microtime()

+1

+1 Questo è il metodo standard. È importante farlo un gran numero di volte (cioè in un loop) in modo che (a) si ottenga una differenza misurabile, e (b) in modo da poter filtrare le variazioni di velocità tra una corsa e l'altra. – Spudley

+0

grazie! sembra che non ci sia quasi nessuna differenza tra le 2 funzioni che ho citato :) str_replace sembra solo un po 'più veloce a volte – Alex

+0

Non ne sono sicuro, ma l'interprete ha un ottimizzatore, che può scoprire che il tuo loop può essere ottimizzato, perché non ci sono variabili cambiato nelle iterazioni del ciclo. Quindi, il modo migliore è usare profiler di codice come XDebug – seriyPS

25

Il modo più semplice:

$time = microtime(true); // time in Microseconds 

// Your code here 

echo (microtime(true) - $time) . ' elapsed'; 

Il modo difficile (er): Utilizza un profiler del codice per vedere esattamente quanto tempo impiegano i tuoi metodi.

6

Ho trovato questa risposta con "bisko" nel thread this.

$ start = microtime (true);

per (...) { .... }

$ end = microtime (true);

echo ($ end - $ start). ' secondi;

Il ciclo for può essere sostituito da quello che si desidera.

Problemi correlati