如何对PHP脚本的效率进行基准测试

2022-08-30 06:47:01

我想知道对我的PHP脚本进行基准测试的最佳方法是什么。无论是 cron 作业、网页还是 Web 服务,都无关紧要。

我知道我可以使用微时间,但它真的给了我PHP脚本的实时时间吗?

我想在PHP中测试和基准测试做同样事情的不同函数。例如,vs 或 vs 或 preg_replace vs str_replace'preg_matchstrposdomdocumentpreg_match

网页示例:

<?php
// login.php

$start_time = microtime(TRUE);

session_start(); 
// do all my logic etc...

$end_time = microtime(TRUE);

echo $end_time - $start_time;

这将输出:0.0146126717(一直在变化 - 但这是我得到的最后一个)。这意味着执行 PHP 脚本需要 0.015 左右。

有没有更好的方法?


答案 1

如果你真的想对现实世界的代码进行基准测试,请使用像XdebugXHProf这样的工具。

Xdebug非常适合您在开发/过渡中工作,而XHProf是一个很好的生产工具,并且可以安全地在那里运行它(只要您阅读说明)。任何一个页面加载的结果都不会像看到你的代码如何执行那样重要,而服务器也被要求做一百万件其他事情,资源变得稀缺。这就提出了另一个问题:您是否在CPU上遇到瓶颈?公羊?输入/输出?

您还需要不仅要查看在脚本中运行的代码,还要查看脚本/页面的提供方式。您使用的是哪种 Web 服务器?举个例子,我可以让nginx + PHP-FPM认真地执行mod_php + Apache,这反过来又通过使用一个好的CDN来提供静态内容而受到抨击。

接下来要考虑的是您要针对哪些内容进行优化?

  • 页面在用户浏览器中的呈现速度是第一优先级吗?
  • 以最小的 CPU 消耗尽快将每个服务器请求抛回是否为目标?

前者可以通过执行诸如gzip化发送到浏览器的所有资源之类的操作来提供帮助,但是这样做(在某些情况下)可能会使您进一步远离实现后者。

希望上述所有内容都有助于表明,仔细隔离的“实验室”测试不会反映您在生产中将遇到的变量和问题,并且您必须确定您的高级目标是什么,然后您可以做些什么来实现目标,然后再沿着微观/过早优化路线走向地狱


答案 2

要对完整脚本在服务器上的运行速度进行基准测试,您可以使用许多工具。首先,请确保您的脚本(例如preg_match vs strpos)必须输出相同的结果才能使您的测试合格。

您可以使用:


推荐