- 浏览: 1872423 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangyudong:
Wisdom RESTClient工具地址更新了哦https: ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
wangyudong:
很多REST Client是不支持自动化测试RESTful A ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
higkoo:
一个非常棒的系统,要是能支持LDAP等开源认证就完美了。
Cynthia 是个问题管理/BUG管理/任务管理/项目管理系统。 -
寻光之旅:
标签库使用有啥好处呢?
thinkphp 使用标签库的步骤 -
lgdjy123:
Android:TextView属性大全
Benchmark工具类包说明
直接下载:http://pear.php.net/package/Benchmark/download
Benchmark工具类包共有三个文件,分别是Timer.php、Iterate.php和Profiler.php,三个工具类功能相同,只是侧重点不同,都是用于调试代码获取程序的执行时间。
1,Benchmark_Timer类原理与通过microtime函数获取微秒时间再比较前后两个时间值的差相同。
2,Benchmark_Iterate类用于调试函数的平均执行时间。
3,Benchmark_Profiler类用于统计代码和函数的执行时间以及函数的调用次数。
具体使用方法三个文件内都有详细的使用实例。
如何获取一行或一段代码的执行时间
1,通常使用microtime函数获取代码前后的微秒时间数再比较两个值的时间差,如下
但这种方法很有局限制,不能大范围的应用,而且每次都需要书写很多代码,适合于简单的调试。具体请查看PHP手册详细说明。
2,通过使用benchmark_Timer类获取代码前后执行的时间差,可以同时获取N行代码的执行时间,操作简单,只需要增加一个marker标记即可,请看下面Benchmark_Timer类的使用说明
如何使用Benchmark_Timer类
Benchmark_Timer类只需要在调试文件中增加Benchmark_Timer类初始化声明和marker标注,文件尾打印各个标注处的执行时间,实例如下
require_once 'Benchmark/Timer.php';$timer = new Benchmark_Timer();$timer->start();$timer->setMarker("marker 01");usleep(1);$timer->setMarker("marker 02");usleep(2);$timer->setMarker("marker 03");usleep(3);$timer->stop();$timer->display();
打印结果有两种方法:
一种是表格输出方式,$timer->display(); 如下图
另外一种是手动var_dump或print_r打印,$timer->getProfiling();,print_r函数打印如下图
array0 =>array'name' => string 'Start' (length=5)'time' => string '1265942405.31334800' (length=19)'diff' => string '-' (length=1)'total' => string '-' (length=1)1 =>array'name' => string 'marker 01' (length=9)'time' => string '1265942405.31374400' (length=19)'diff' => string '0.000396' (length=8)'total' => string '0.000396' (length=8)2 =>array'name' => string 'marker 02' (length=9)'time' => string '1265942405.31423000' (length=19)'diff' => string '0.000486' (length=8)'total' => string '0.000882' (length=8)3 =>array'name' => string 'marker 03' (length=9)'time' => string '1265942405.31519200' (length=19)'diff' => string '0.000962' (length=8)'total' => string '0.001844' (length=8)4 =>array'name' => string 'Stop' (length=4)'time' => string '1265942405.31623800' (length=19)'diff' => string '0.001046' (length=8)'total' => string '0.002890' (length=8)
结果说明
1,name表示标注名称,如上 包含两个特殊标注start和stop表示开始和结束,其次是自定义标注 marker 01 marker 02等
2,time表示当前的微秒时间
3,diff表示上一个标记到当前标记的执行时间,这个就是我们需要获取的时间差,没错,看的就是这个值。
4,total表示执行到当前的整个时间
如何使用Benchmark_Iterate类
Benchmark_Iterate类用于调试函数执行的平均时间,与Benchmark_Timer类不同在于可以多次调用同一个函数获取其执行时间的平均值,实例如下:
require_once "Benchmark/Iterate.php";$bench = new Benchmark_Iterate;function test($i){ echo $i;}$bench->run(100,"test",10);var_dump($bench->get());
通过调用test函数100次获取平均执行时间,结果如下
array1 => string '0.000486' (length=8)2 => string '0.000466' (length=8).............................(中间省略)99 => string '0.000479' (length=8)100 => string '0.000467' (length=8)'mean' => string '0.000476' (length=8)'iterations' => int 100
结果说明
1,每个数字表示每次调用的时间
2,mean表示函数执行的平均时间,如上调用100次test函数的平均时间为0.000476
3,iterations表示函数调用的次数
如何使用Benchmark_Profiler类
Benchmark_Profiler类用于统计函数的执行次数和执行时间等,实例如下:
require_once 'Benchmark/Profiler.php';$profiler = new Benchmark_Profiler(TRUE);function myFunction() { global $profiler; $profiler->enterSection('myFunction'); //do something $profiler->leaveSection('myFunction'); return;}//do somethingmyFunction();//do more
结果如下
Benchmark_Profiler类在实际性能调试中使用并不多,因为还有比这个更好的工具,如xDebuger等,因此可直接忽略!
Benchmark 工具类在使用调试中针对逐行调试来分析程序性能问题非常实用,主要使用Benchmark_Timer类调试各代码段的时间点,以通过获取执行时间来优化程序提高代码的性能。这里就不再深入讨论,如果在使用的过程中有什么问题欢迎大家一起交流!
如果你发现这种逐行调试很累很辛苦,如果你想从整体上把握程序的性能情况,这个Benchmark类调试工具就不能满足你的需求,下期将讨论PHP性能调试工具xDebuger的安装与使用。
相关资料
microtime
(PHP 3, PHP 4, PHP 5)
microtime -- 返回当前 Unix 时间戳和微秒数
说明
mixed microtime ( [bool get_as_float] )
microtime() 当前 Unix 时间戳以及微秒数。本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
如果给出了 get_as_float 参数并且其值等价于 TRUE,microtime() 将返回一个浮点数。
注意: get_as_float 参数是 PHP 5.0.0 新加的。
发表评论
-
Lumen写事件
2018-02-10 10:46 7741.在事件里面定义事件 <?php /** * ... -
PHP设计模式之状态机模式-实现业务流控制
2018-01-28 11:16 1782应用场景:在我们日常开发中经常会遇到各种状态的切换,例如电 ... -
装wampserver时显示计算机丢失MSVCR110.dll
2017-03-07 10:15 1183http://www.microsoft.com/zh-CN ... -
phpdocument的使用
2016-10-25 16:24 598官网: https://www.phpdoc.org/ ... -
微信调试方法
2016-05-24 09:25 7731. 在本地搭建类似LAMP的环境(或者WAMP)都行,目的 ... -
创建自己的composer包
2015-12-10 17:01 978创建一个composer/packagist包 在g ... -
微信nickname乱码及mysql编码格式设置(utf8mb4)
2015-12-08 12:24 1714将数据库的编码设置为utf8mb4_general_ci ... -
docker php 配置
2015-10-28 18:10 1105FROM php:5.6-fpm MAINTAINER S ... -
四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
2015-08-15 21:54 1511存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 ... -
分享PHP代码检查经验
2015-08-09 23:03 1596问: 团队十多人开发, 如何保证代码规范统一? http ... -
php过滤只匹配中英文字符串
2015-08-04 15:26 1894<?php $str = "php $ ... -
移除emoji内容
2015-08-04 14:52 1233public static function removeE ... -
php 敏感词过滤高级版
2015-08-04 10:20 1482前面介绍过一个过滤了 ... -
php过滤广告内容(兼职,QQ号,淘宝兼职,网址)
2015-08-04 10:17 1180如果你网站有评论那么你肯定会发现你网站经常会被一人注入广告了 ... -
写第一个PHP扩展, 实现计算数组的个数
2015-07-20 19:09 1341需求: 写第一个PHP扩展, 里面包含一个函数叫 maxw ... -
PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式
2015-07-15 11:08 1642// 多态, 在JAVA中是这样用的, 其实在PHP当中可 ... -
php命令行界面
2015-07-16 17:03 963常用选项 php -v php -i ... -
使用phpdocument
2015-07-14 17:05 872pear install phpdoc phpDocumen ... -
将session存储到数据库中
2015-07-14 15:33 815CREATE TABLE sessions ( id ... -
正则表达式向前查找向后查找,环绕或零宽断言
2015-07-14 12:40 2398向前查找和向后查找 1. 向前查找:根据要匹配的字符序列后 ...
相关推荐
Benchmark etcd性能测试工具
为了评估和比较不同PHP版本或优化代码的性能,开发者们常常会使用Benchmark工具。本文将深入探讨PHP7 Benchmark工具及其相关知识点。 首先,理解Benchmark的概念至关重要。Benchmark,即基准测试,是通过执行一系列...
这是PHP性能优化系列第二期,如何使用PEAR工具类Benchmark逐行获取代码或函数的执行时间。工欲善其事,必先利其器!如何安装PEAR和Benchmark请参考PHP性能优化系列第一期 [PHP性能优化准备篇图解PEAR安装]Benchmark...
**在线目标跟踪:Benchmark2015 中文翻译** 在线目标跟踪是计算机视觉领域中的一个核心问题,它涉及在连续的视频序列中自动检测并跟踪特定对象。Benchmark2015是一个重要的研究平台,旨在评估和比较不同的在线目标...
BenchmarkSQL是一款广泛使用的开源数据库性能测试工具,它能够对各种类型的数据库系统进行基准测试,以评估其在不同工作负载下的性能。该工具旨在提供一个标准化的方法来比较不同数据库系统的处理能力,从而帮助用户...
1 保证绝无 BUG,该工具封装自 RocketMQ 团队的 Benchmark,且经过本人测试。 2 功能强大,覆盖普通消息、定时(延时)消息、事务消息(提交、回滚)等基本场景的发送场景。集群订阅和广播订阅的消费场景。内含多种...
BenchmarkSQL是一款广泛使用的开源数据库压力测试工具,尤其在评估和比较不同数据库系统的性能时,它的价值尤为突出。该工具以其易用性、灵活性和广泛的数据库支持而闻名,现在它已经更新到5.0版本,并且特别强调对...
固态硬盘速度检测工具:AS SSD Benchmark
在优化算法领域,benchmark functions是评估和比较不同算法性能的重要工具。这些函数通常是设计成具有各种挑战性特性的,如多模态、非线性、非凸性等,以模拟实际问题中的复杂优化场景。Benchmark functions.zip ...
AS SSD Benchmark是一款专为固态硬盘设计的基准测试工具,它可以全面评估SSD的读写性能。该软件通过模拟真实世界的读写操作,如连续读写、4K随机读写等,来测量硬盘的速度,提供一个客观的性能评价标准。 首先,AS ...
这份使用说明书旨在指导用户使用Benchmark Factory工具来对数据库进行性能测试和压力测试。 一、引言 Benchmark Factory是Quest公司推出的一个性能测试工具,旨在帮助用户快速、简单地对数据库进行性能测试。该...
Benchmark.zip文件包含的WebBenchmark工具正是为了这个目的而设计的。它允许我们模拟大量用户同时访问WebAPI接口,以便分析和优化服务性能。 首先,我们要理解WebAPI是什么。WebAPI是.NET框架的一部分,用于构建...
综上所述,"手机性能测试软件benchmark"提供了全面的手机性能评估,通过对处理器、内存、GPU等硬件组件的测试,以及对系统响应速度和电池续航的考察,帮助用户和开发者了解设备的真实性能,并据此做出优化或选择合适...
PHP的性能分析也可以通过工具来实现,如使用Apache Benchmark、PHP DebugBar等工具来测试和优化PHP的性能。 PHP性能分析及其应用是Web开发领域的重要内容,对于提高Web站点的性能和访问速度具有重要意义。 知识点...
BenchmarkSQL是一款广泛应用的数据库性能测试工具,专为评估和比较各种数据库管理系统(DBMS)的性能而设计。它以开源的形式提供,支持包括Oracle、MySQL以及人大金仓在内的多种数据库系统,使得用户能够全面了解...
, 《Linux性能优化大师》首先对Linux 操作系统进行了深入剖析,并对最常用的企业监控工具Benchmark 及其他监控工具进行了详细的介绍,此外分析了系统中识别和分析瓶颈的过程,最后阐述如何使用性能衡量工具,以及...
### Benchmark Factory 使用指导书知识点详解 #### 一、概述与工作原理 **1.1 Benchmark Factory 简介** Benchmark Factory (简称 BF) 是一种高度可扩展的性能测试工具,适用于进行压力测试、容量规划以及性能...
BOP(Benchmark for 6D Object Pose Estimation)基准是评估这一任务性能的标准平台,提供了多种场景和物体数据集,以及评价指标。本Python工具包则是针对BOP基准设计的,方便研究人员进行实验和比较不同算法的效果...