簡體   English   中英

進行簡單性能測試的更好方法

[英]Better way to do simple performance testing

比較操作性能時,這就是我通常進行的測試:

<?php
$w = 'world';
$start1 = microtime(true);
for($i=0;$i<10000;$i++)
    echo 'Hello ' . $w . '!';
$end1 = microtime(true);

$start2 = microtime(true);
for($i=0;$i<10000;$i++)
    echo "Hello $w!";
$end2 = microtime(true);

$start3 = microtime(true);
for($i=0;$i<10000;$i++)
    echo 'Hello ' + $w + '!';
$end3 = microtime(true);

echo "\n\n\n";
echo 'Concatination: ' . ($end1 - $start1) . "\nInline Var: " . ($end2 - $start2) . "\nAddition Operator: " . ($end3 - $start3);

有沒有更好的方法來進行這些測試,也許是更可靠的方法? 看來,如果我多次運行相同的測試,我會得到截然不同的結果,例如,我多次運行以上測試,這就是我得到的結果。

Concatination: 0.057300090789795
Inline Var: 0.092978954315186
Addition Operator: 0.090532064437866

Concatination: 0.10458517074585
Inline Var: 0.075299978256226
Addition Operator: 0.039528131484985

Concatination: 0.063031911849976
Inline Var: 0.07781195640564
Addition Operator: 0.022316932678223

Concatination: 0.079019069671631
Inline Var: 0.030484914779663
Addition Operator: 0.096056938171387

Concatination: 0.077842950820923
Inline Var: 0.052779912948608
Addition Operator: 0.037421941757202

Concatination: 0.084203004837036
Inline Var: 0.013757944107056
Addition Operator: 0.074331045150757

Concatination: 0.027930021286011
Inline Var: 0.05648398399353
Addition Operator: 0.049610137939453

Concatination: 0.041821956634521
Inline Var: 0.047034978866577
Addition Operator: 0.062538862228394

Concatination: 0.0071420669555664
Inline Var: 0.066315889358521
Addition Operator: 0.004756927490234

Concatination: 0.088988065719604
Inline Var: 0.022722959518433
Addition Operator: 0.06276798248291

如您所見,每次運行可能會有截然不同的結果。

嘗試使用xdebug,它可以在代碼運行時對其進行概要分析,從而生成跟蹤文件。 然后可以通過wincachegrind / kcachegrind或類似程序運行此程序,以向您提供有關執行方式,花費時間等的詳細信息。

Zend Platform還包括一個探查器(如果有)。 我不記得免費的Zend Debugger和/或Zend Server Community Edition是否也包括了探查器,但是它是對代碼進行探查的另一種選擇。

就個人而言,我更喜歡xdebug。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM