2010-08-14 18 views
10

PHP'de belirli kod kodlarını nasıl değerlendirebilirim? Farklılıkları hesaplamak için zamanlayıcıları kullanabilirim, sadece orada en iyi çözüm olup olmadığından emin değilim.PHP Performans Ölçümü

+0

Hepimiz en iyi dünyada yaşamıyoruz. Zamanlayıcılar oldukça kullanışlı ve oldukça taşınabilir. Bir darboğaz bulmak için birkaç dakika sürer. Zend Studio –

cevap

3

Xdebug'da bulunan gibi bir profiler kullanabilirsiniz.

+1

veya Zend Hata Ayıklayıcı ve Linux kullanıyorsanız, ortaya çıkan profil dosyalarını görselleştirmek için kcachegrind kullanın. – Gordon

7

Performansı ve daha fazlasını ölçmek için XDebug Profiler'a bakın.

xdebug en Profiler size PHP kodu analiz ve darboğazları belirlemek ya da genel olarak kod parça yavaş ve bir hız artışı kullanabilirsiniz görmek olanağı verir güçlü bir araçtır olduğunu.

+0

kullanıyorsa –

1

XDebug serin ama bu kitaplığı yüklemek istemiyorum, sen deneyebilirsiniz şunlardır:

Ne mümkün şişe boyunlarını bulmak için kullanmaktır:

$benchmark_start = microtime(true); 
// Code goes here 
$benchmark_stop = microtime(true); 
$benchmark_total = $benchmark_stop - $benchmark_start; 
echo "The script took ". $benchmark_total." seconds"; 
1

biraz daha sofistike zamanlayıcılar
kullanarak el ile profil oluşturma örneği, özellikle de yalnızca FTP erişimi olan bazı canlı sunucularda işleri sıralamanız istendiğinde mükemmel çalışır.
, profil geliştirmenin, sera geliştiricinin PC'sinden ziyade, canlı sunucuda çok daha önemli (ve kullanışlı) olduğunu belirtmekten kaçınmalıdır.

$TIMER['start']=microtime(TRUE); 
// some code 
$query="SELECT ..."; 
$TIMER['before q']=microtime(TRUE); 
    $res=mysql_query($query); 
$TIMER['after q']=microtime(TRUE); 
    while ($row = mysql_fetch_array($res)) { 
// some code 
    } 
$TIMER['array filled']=microtime(TRUE); 
// some code 
$TIMER['pagination']=microtime(TRUE); 

if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) { //I set my IP here 
    echo "<table border=1><tr><td>name</td><td>so far</td><td>delta</td><td>per cent</td></tr>"; 
    reset($TIMER); 
    $start=$prev=current($TIMER); 
    $total=end($TIMER)-$start; 
    foreach($TIMER as $name => $value) { 
    $sofar=round($value-$start,3); 
    $delta=round($value-$prev,3); 
    $percent=round($delta/$total*100); 
    echo "<tr><td>$name</td><td>$sofar</td><td>$delta</td><td>$percent</td></tr>"; 
    $prev=$value; 
    } 
    echo "</table><>"; 
} 
+0

Bu sofistike olarak adlandırıyorum. – raveren

+1

evet, haklısın! dahi daha uygun bir kelime olurdu –

İlgili konular