当前位置: 首页 > 面试题库 >

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

云航
2023-03-14
问题内容

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

我知道我可以使用microtime,但这真的给了我PHP脚本的实时性吗?

我想测试和测试PHP中执行相同功能的不同函数。例如,preg_matchvs strposdomdocumentvs
preg_match或preg_replace vs str_replace`

网页示例:

<?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。

有没有更好的办法?


问题答案:

如果您确实想对真实世界的代码进行基准测试,请使用Xdebug和XHProf之类的工具。

Xdebug非常适合在开发人员/舞台上工作的人,XHProf是生产的绝佳工具,并且可以在此处安全运行(只要您阅读了说明)。任何单个页面加载的结果都不会像查看服务器在执行一百万其他事务以及资源变得稀缺时代码的执行情况那样具有相关性。这就提出了另一个问题:您是否正在瓶颈CPU?内存?输入/输出?

您还需要关注的不仅仅是脚本中运行的代码,而是如何提供脚本/页面。您正在使用什么Web服务器?举例来说,我可以使nginx + PHP-
FPM认真执行mod_php + Apache,而后者又通过使用良好的CDN来提供静态内容而被淘汰。

接下来要考虑的是您要优化的内容?

  • 页面在用户浏览器中呈现的速度是否是第一要务?
  • 目标是以最少的CPU消耗尽快回复对服务器的每个请求吗?

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

希望以上所有内容可以帮助表明,精心隔离的“实验室”测试不会反映您在生产中会遇到的变量和问题,并且您必须确定您的高级目标是什么,然后才能达到目标。在前往微观/过早优化路线前往地狱之前。



 类似资料:
  • 可能的重复: 我如何在Java写一个正确的微基准? 假设我有两个算法,我如何找出哪一个性能更高? 我的意思是,我可以用数学来证明它,但是如果我使用一些库,这可能会变得单调乏味。没有数学,我从来没有学会过如何做正确的基准。

  • 11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循

  • GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m

  • 问题内容: 您如何调试 PHP 脚本? 我知道诸如使用错误报告之类的基本调试。 PHPEclipse中 的断点调试也非常有用。 在phpStorm或任何其他IDE中进行调试的 最佳方式 (快速简便)是什么? 问题答案: 尝试使用EclipsePDT来设置一个具有上述调试功能的Eclipse环境。与旧方法var_dump相比,调试代码的能力是一种更好的方法,它可以在各个点进行打印并在各个位置进行打印

  • These benchmarks were designed to measure Javascript running time for Mithril in comparison with other popular Javascript MVC frameworks. Javascript running time is significant because the gzipped siz

  • https://github.com/17koa/koa-benchmark 比较koa和koa2和express性能 Prerequisites for OSX brew install wrk wrk原理 命令行操作 $ wrk -t8 -c1000 -d10 http://127.0.0.1:3000 Test 首次测试,需要安装依赖,会比较慢 make all 不安装依赖,重复测试