当没有异常被捕获时,php 5尝试捕获会影响性能吗?

时间:2010-01-27 20:05:17

标签: php performance exception-handling

非常聪明的工作人员告诉我,尝试不抛出的捕获会影响拥有数百万用户的网站的性能。基于发布的单元测试表明性能相同,我想知道这是否与操作系统级别和/或Web服务器特定情况有关。例如,Web服务器的异步工作实现发生在子进程而不是线程上。

有人知道吗?

我希望看到的是php profiler的输出,显示实际使用的cpu时间。

jmucchiello对Performance of try-catch in php的评论很有意思,但不测量使用的cpu时间。

谢谢, 大卫

1 个答案:

答案 0 :(得分:12)

我进行了一项非常小而且不科学的测试,发现在一个永远不会被调用的catch或者在try catch语句之外使用它之间几乎没有区别。我通过我的探查器分别运行了这两个脚本中的每一个5次,并平均了总时间。

结果

  • 使用Try / Catch语句: 1.34秒
  • 没有Try / Catch声明: 1.3秒

守则

的try / catch

<?php
foreach(range(1,200000) as $i) {
    try {
         if ($i % 5 == 0 && $i % 3 == 0)    echo "fizzbuzz";
         elseif ($i % 5 == 0)               echo "fizz";
         elseif ($i % 3 == 0)               echo "buzz";
         else                               echo $i;
     } catch (Exception $e) {
         echo sin($i) * cos($i * pi());
     }
}

?>

没有尝试/抓住

<?php
foreach(range(1,200000) as $i) {
     if ($i % 5 == 0 && $i % 3 == 0)    echo "fizzbuzz";
     elseif ($i % 5 == 0)               echo "fizz";
     elseif ($i % 3 == 0)               echo "buzz";
     else                               echo $i;
}

?>