2010-08-14 57 views
10

Làm cách nào để tôi có thể chuẩn bị một số mã PHP nhất định? Tôi có thể sử dụng tính giờ để tính toán sự khác biệt, tôi chỉ không chắc chắn nếu nó là giải pháp tốt nhất hiện có.Đo lường hiệu suất PHP

+0

Tất cả chúng ta đều không sống trong thế giới tốt nhất. Bộ hẹn giờ khá dễ sử dụng và có tính di động cao. Nó sẽ đưa bạn một vài phút để xác định vị trí một nút cổ chai. –

Trả lời

3

Bạn có thể sử dụng số profiler như hình được tích hợp vào Xdebug.

+1

hoặc Zend Debugger nếu sử dụng Zend Studio – Gordon

7

Hãy xem XDebug Profiler để đánh giá hiệu suất và hơn thế nữa.

Profiler Xdebug là một công cụ mạnh mẽ cung cấp cho bạn khả năng phân tích mã PHP của bạn và xác định tắc nghẽn hoặc thường thấy mà phần của mã của bạn là chậm và có thể sử dụng một tăng tốc độ.

+0

Và nếu bạn đang sử dụng Linux, hãy sử dụng kcachegrind để trực quan hóa các tệp hồ sơ kết quả. –

1

XDebug là mát mẻ nhưng nếu bạn không muốn cài đặt thư viện này, bạn có thể thử như sau:

gì tôi sử dụng để xác định vị trí cổ chai có thể là:

$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

phức tạp hơn một chút Ví dụ về hồ sơ thủ công sử dụng bộ hẹn giờ
hoạt động hoàn hảo cho tôi, đặc biệt khi tôi được yêu cầu sắp xếp mọi thứ trên một số máy chủ trực tiếp chỉ với quyền truy cập FTP.
không cần phải đề cập rằng việc định hình là cách quan trọng hơn (và hữu ích) trên máy chủ trực tiếp, thay vì trên máy tính của nhà phát triển nhà kính.

$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

Tôi hầu như không gọi điều này phức tạp. – raveren

+1

ồ vâng, bạn nói đúng! thiên tài sẽ là từ thích hợp hơn –

Các vấn đề liên quan