使用php-timeit估计php函数的执行时间


Posted in PHP onSeptember 06, 2015

废话不多说了,直接把我写的timeit函数分享给大家,具体内容如下:

/**
 * Compute the delay to execute a function a number of time
 * @param $count Number of time that the tests will execute the given function
 * @param $function  the function to test. Can be a string with parameters (ex: 'myfunc(123, 0, 342)') or a callback
 * @return float   Duration in seconds (as a float)
 */
function timeit($count, $function) {
 if ($count <= 0){
  echo "Error: count have to be more than zero";
  return -1;
 }
 $nbargs = func_num_args();
 if ($nbargs < 2) {
  echo 'Error: No Funciton!';
  echo 'Usage:';
  echo "\ttimeit(count, 'function(param)')";
  echo "\te.g:timeit(100, 'function(0,2)')";
  return -1;      // no function to time
 }
 // Generate callback
 $func = func_get_arg(1);
 $func_name = current(explode('(', $func));
 if (!function_exists($func_name)) {
  echo 'Error: Unknown Function';
  return -1;     // can't test unknown function
 }
 $str_cmd = '';
 $str_cmd .= '$start = microtime(true);';
 $str_cmd .= 'for($i=0; $i<'.$count.'; $i++) '.$func.';';
 $str_cmd .= '$end = microtime(true);';
 $str_cmd .= 'return ($end - $start);';
 return eval($str_cmd);
}

测试一下自己写的一个求根算法与系统内置求根函数的执行时间,如下:

//取平方根
function sqrt_nd($num){
 $value = $num;
 while(abs($value*$value -$num) > 0.001){
  $value = ($value + $num/$value)/2;
 }
 return $value;
}
print timeit(1000, 'sqrt_nd(5)');
print "\n";
print timeit(1000, 'sqrt(5)');

测试结果如下:

0.028280019760132
0.0041000843048096

可见,内置求根函数比自定义的求根函数快了6倍多~~

php中检测函数执行时间的功能使用的方法

PHP 中的 microtime() 函数可以实现

microtime() 函数返回当前 Unix 时间戳和微秒数。

microtime(get_as_float)

参数说明
get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。

本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。

例如:

<?php
$start_time = microtime(true);
for($i=1;$i<=1000;$i++){
echo $i.'<br>';
}
$end_time = microtime(true);

echo '循环执行时间为:'.($end_time-$start_time).' s';
?>

PHP 相关文章推荐
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
php获取淘宝分类id示例
Jan 16 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
Apr 03 PHP
PHP反射学习入门示例
Jun 14 PHP
如何在PHP中读写文件
Sep 07 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 #PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 #PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 #PHP
PHP中error_reporting()用法详解
Aug 31 #PHP
大家在抢红包,程序员在研究红包算法
Aug 31 #PHP
微信公众平台开发之天气预报功能
Aug 31 #PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
Aug 28 #PHP
You might like
PHP 图片文件上传实现代码
2010/12/29 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
书单|人生苦短,你还不用python!
2017/12/29 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
python随机模块random使用方法详解
2020/02/14 Python
Python实现异步IO的示例
2020/11/05 Python
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
分家协议书
2014/04/21 职场文书
工程负责人任命书
2014/06/06 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书