3 Stimmen

PHP Inline-Profiling

Ich suche nach einer Lösung, um meine php-Skripte im Browser zu profilieren (anstatt *cachegrind zu verwenden)

Ich habe das vor einiger Zeit gesehen http://particletree.com/features/php-quick-profiler/ aber ich habe keine Ahnung, wie gut (oder genau) sie ist.

Tipps/Ratschläge erwünscht

4voto

Jason Punkte 2025

Xdebug erzeugt Cachegrind-Dateien, was Sie wahrscheinlich vermeiden möchten. Ich verwende derzeit XHProf http://mirror.facebook.net/facebook/xhprof/doc.html da es eine großartige Webschnittstelle zur Anzeige der Profilergebnisse enthält.

1voto

Mike Dunlavey Punkte 39339

Können Sie die XDebug ? Wenn ja, können Sie Folgendes verwenden diese Technik die meiner Meinung nach genauso effektiv ist wie jeder andere Profiler.

Bei einem Profiler sollten Sie nicht auf die Genauigkeit der Zeitmessung achten. Dies geht in der Regel auf Kosten der Genauigkeit bei der Fehlersuche.

0voto

Björn Punkte 28353

Ich habe die Benchmark auf verschiedenen Websites, um schnell und einfach Profile zu erstellen - es funktioniert wie erwartet: nicht großartig, aber gut genug für meine Bedürfnisse.

0voto

Your Common Sense Punkte 154708

Ich verwende einen so einfachen Code wie diesen.
Einfach $TIMER['mark']=microtime(TRUE); alle anderen den Code:

<?
$TIMER['start']=microtime(TRUE);
// some code
$TIMER['q1 start']=microtime(TRUE);
  $res=mysql_query($query);
$TIMER['q1 end']=microtime(TRUE);  
// some code
$TIMER['q2 start']=microtime(TRUE);
  $res=mysql_query($query);
$TIMER['q2 end']=microtime(TRUE);  
// some code
$TIMER['pagination']=microtime(TRUE);  
?>

und dann eine einfache Tabelle mit den Ergebnissen:

<?
if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) {
  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><>";
}
?>

Es ist nicht so umfassend wie die xDebug-Ausgabe, aber es kann einen Engpass finden, und ich brauche nichts weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X