Basit bir performans testi yapmak için daha iyi bir yolu

1 Cevap php

Operasyonlarının performansını kıyaslarken bu ben typicaly testleri yapacağını nasıl:

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

, Muhtemelen daha güvenilir bir şekilde bu testleri yapmak için daha iyi bir yolu var mı? Ben aynı Testlerin birkaç kez çalıştırırsanız ben, çılgınca farklı sonuçlar elde edebilirsiniz, örneğin ben yukarıdaki birkaç kez koştu ve bu ne var olduğunu gibi görünüyor.

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

Her çalışan gördüğünüz gibi çok farklı sonuçlar olabilir.

1 Cevap

Olarak çalışır XDebug deneyin, bir izleme dosyası üreten, kodunuzu profil. Bu daha sonra wincachegrind / KCacheGrind veya benzeri ile çalıştırmak olabilir, size yürütme peformed hakkında ayrıntılı bilgi vermek, ne zaman aldı, vs vs

Eğer mevcut olduğunu varsa Zend Platform ayrıca, bir profiler içerir. Ben özgür Zend Debugger ve / veya Zend Server Community Edition, hem de profilcisini içeriyorsa hatırlamıyorum, ama değil bunu alabilirsiniz eğer kod profil onun başka bir seçenek.

Şahsen ben XDebug tercih ederim.