Лучший способ сделать простое тестирование производительности - PullRequest
0 голосов
/ 14 июля 2009

При сравнении производительности операций я обычно выполняю тесты:

<?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 Ответ

3 голосов
/ 14 июля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...