首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对PHP脚本效率进行基准测试

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

Stack Overflow用户
提问于 2011-11-28 11:53:26
回答 7查看 89K关注 0票数 141

我想知道对PHP脚本进行基准测试的最佳方法是什么。不管是cron作业,还是网页或web服务。

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

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

网页示例:

代码语言:javascript
复制
<?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左右的时间。

有没有更好的方法?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-04 10:16:49

如果你真的想对真实世界的代码进行基准测试,那么可以使用XdebugXHProf这样的工具。

Xdebug非常适合在开发/登台时使用,而XHProf是一个很棒的生产工具,在那里运行它是安全的(只要您阅读了说明)。任何一个页面加载的结果都不会像查看代码的执行情况那样重要,而服务器也要做大量的其他工作,资源变得稀缺。这就引出了另一个问题:你是否在CPU上遇到了瓶颈?拉姆?I/O?

您还需要关注脚本中运行的代码以外的内容,了解脚本/页面是如何提供服务的。您使用的是什么web服务器?举个例子,我可以让nginx + PHP-FPM的性能远远超过mod_php + Apache,而后者由于使用好的CDN提供静态内容而遭受重创。

下一件要考虑的事情是你试图优化的是什么?

  • 是页面在用户浏览器中呈现的速度,它是第一优先级-
  • 以最小的CPU消耗尽可能快地将服务器的每个请求重新抛出,目标是

前者可以通过away压缩发送给浏览器的所有资源来帮助实现,但这样做(在某些情况下)可能会使您进一步远离实现后者。

希望以上所有内容都能帮助表明,仔细隔离的“实验室”测试不会反映出你在生产中会遇到的变量和问题,并且在开始进行微/过早优化route to hell之前,你必须确定你的高级目标是什么,然后你可以做些什么来实现这个目标。

票数 128
EN

Stack Overflow用户

发布于 2011-12-04 10:35:33

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

您可以使用:

您使用的

  • jmeter
  • ApacheBench工具(see an example)
  • dbench
  • http_load
  • curl-loader
  • httperf
  • siege
  • vegeta
  • the代码也很好,但使用了更大的循环(如1,000,000)
票数 77
EN

Stack Overflow用户

发布于 2011-12-04 10:17:18

您将希望了解Xdebug,更具体地说,是Xdebug's profiling capabilities

基本上,您启用分析器,每次加载网页时,它都会创建一个可以使用WinCacheGrindKCacheGrind读取的缓存研磨文件。

Xdebug的配置可能有点棘手,因此下面是我的php.ini的相关部分以供参考:

代码语言:javascript
复制
[XDebug]
zend_extension = h:\xampp\php\ext\php_xdebug-2.1.1-5.3-vc6.dll
xdebug.remote_enable=true
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=h:\xampp\cachegrind
xdebug.profiler_output_name=callgrind.%t_%R.out

下面是WinCacheGrind中一个.out文件的屏幕截图

这应该提供了有关PHP脚本效率的充分细节。你想要针对那些花费时间最多的事情。例如,您可以将一个函数优化为所需时间的一半,但优化一个在页面加载期间被调用数十次(如果不是数百次)的函数会更好。

如果你很好奇,这只是我自己写的CMS的一个旧版本。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8291366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档