2009-07-14 10 views
0

При сравнении производительности операций это, как я бы typicaly сделать тесты:Лучшего способа сделать тестирование простой производительности

<?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 

Как вы можете видеть при каждом запуске могут быть совершенно разные результаты.

+1

Ваш выбор метода конкатенации строк практически не влияет на производительность вашего приложения. Хотя вы пытаетесь сжать пару наносекунд времени выполнения из конкатенации строк, у вас, вероятно, есть O (n^3) вложенный цикл или необъявленный запрос где-то, работающий в течение 8 секунд. Кроме того, вы забыли 4-ю форму: echo 'Hello', $ w, '!'; –

ответ

3

Попробуйте xdebug, он может профилировать ваш код при его запуске, создавая файл трассировки. Затем это можно запустить через wincachegrind/kcachegrind или аналогично, чтобы дать вам подробную информацию о том, как было выполнено ваше исполнение, что заняло время и т. Д.

Платформа Zend также включает в себя профайлер, если у вас есть доступный. Я не могу вспомнить, включает ли бесплатный Zend Debugger и/или Zend Server Community Edition профилировщик, но его еще один вариант, чтобы профилировать ваш код, если вы можете его получить.

Лично я предпочитаю xdebug.

 Смежные вопросы

  • Нет связанных вопросов^_^