使用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 MemCached 高级缓存应用代码
Aug 05 PHP
Apache服务器无法使用的解决方法
May 08 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
nginx下安装php7+php5
Jul 31 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 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
自动跳转中英文页面
2006/10/09 PHP
深入php数据采集的详解
2013/06/02 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
PHP递归的三种常用方式
2019/02/28 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
浅谈js闭包理解
2019/03/28 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
js编写简易的计算器
2020/07/29 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python pyheatmap包绘制热力图
2018/11/09 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
周年庆促销方案
2014/03/15 职场文书
2014年车间工作总结
2014/11/21 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL