代码之家  ›  专栏  ›  技术社区  ›  UnkwnTech

做简单性能测试的更好方法

  •  0
  • UnkwnTech  · 技术社区  · 15 年前

    在比较操作性能时,我通常会这样做测试:

    <?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 回复  |  直到 11 年前
        1
  •  3
  •   benlumley    15 年前

    尝试xdebug,它可以在运行时分析代码,生成跟踪文件。然后可以通过wincachegrind/kcachegrind或类似程序运行,以向您提供有关执行方式、花费时间等的详细信息。

    Zend平台还包括一个分析器(如果您有)。我不记得免费的ZendDebugger和/或ZendServer社区版是否也包括分析器,但是如果您能够访问它,它是分析代码的另一个选项。

    就个人而言,我更喜欢xdebug。

    推荐文章