有没有一种方法可以在PHP中测量解析时间?

8
通过运行时基准测试优化PHP代码是很直接的。通过microtime()在一个代码块周围跟踪$start和$end时间,我不是要求使用microtime()的答案。我想做的是测量PHP准备运行其代码所需的时间 - 代码解析/操作码树构建时间。我的理由是,虽然对于网站上每个页面您可能需要的每个类都只需包含(include())它们,但CPU开销不能是“免费”的。我想知道解析时间到底有多“昂贵”。我假设像APC这样的opcode缓存不是场景的一部分。我是否正确地认为,在PHP中测量解析时间是必须在mod_php中进行的?编辑:如果可能,考虑代码中$_SERVER['DOCUMENT_ROOT']的使用将会很有帮助。命令解决方案可能需要一些调整才能实现这一点(但仍然是有价值的答案)。
3个回答

10

有的。确实存在。

<?php return; rest of the code ?>
或者
<?php whole code; $%^parse erorr!@! ?>

然后比较运行空脚本的时间

time php empty.php

加上我上面提到的内容后,运行(或失败)常规脚本所需的时间会增加。

time php test.php

我已经在大文件和PHP5.3上使用了这种方法,Core2Duo 2.4Ghz每秒可以解析1.5至4.5MB的PHP代码(当然,这非常取决于代码的复杂性)。


2

一种方法是通过命令行计时脚本的执行。

例如,在Linux中:

$ time php5 -r 'echo "Hello world";'
Hello world
real    0m1.565s
user    0m0.036s
sys     0m0.024s

这有帮助吗?也许它对于发现不同脚本之间的相对时间很有用,但它可能并不代表通过Apache模块花费的时间。


2

针对您所需的详细分析水平,似乎实施Xdebug (http://xdebug.org/) 可以为您提供最大的信息,而无需将代码切分成片段。


你有关于如何做到这一点的具体示例吗? - jschrab
我发现Zend讲得比我好 - http://devzone.zend.com/article/2803-Introducing-xdebug - Eric Caron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接