使用ltrace工具跟踪PHP库函数调用的方法


Posted in PHP onApril 25, 2016

本文实例讲述了使用ltrace工具跟踪PHP库函数调用的方法。分享给大家供大家参考,具体如下:

可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍一个跟踪库函数的利器ltrace

比如我有这么一段PHP代码

test.php:

<?php
 $y = '1380';
 $arr = array();
 for($i = 0; $i < 2000; $i ++){
   $arr[] = "{$i}"; //故意用引号包起来设成字符串
 }
 for($i = 0; $i < 2000; $i ++){
   if(!in_array($y, $arr)) continue;
 }
?>

ltrace -c /usr/local/php/bin/php test.php (-c表示汇总)

会看到输出如下:

% time   seconds usecs/call   calls   function
------ ----------- ----------- --------- --------------------
95.02  7.417240     368   20146 strtol
2.15  7.160390     413   17316 memcpy
1.63  5.522641     240   22966 free
 0.67  2.275374   2275374     1 curl_global_cleanup
 0.54  2.235466     617   3618 __ctype_tolower_loc
 0.16  2.123547    1194   1778 strrchr
 0.17  1.532224     67   22836 malloc
 0.29  0.382083     67   5678 strlen

可以看到 strtol几乎用去了执行时间的95.02%,瓶颈就找出来了。及PHP会在in_array()测试时试图将字符串行数字转换为long,这会耗费大量时间。所以只要将字符串都转换为整形即可大幅度提高效率。

ltrace真心是个好工具

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
新浪新闻小偷
Oct 09 PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
帝国cms常用标签汇总
Jul 06 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 #PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 #PHP
PHP的全局错误处理详解
Apr 25 #PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 #PHP
php构造函数与析构函数
Apr 23 #PHP
浅谈PHP中的
Apr 23 #PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 #PHP
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
我的论坛源代码(九)
2006/10/09 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
php发送post请求的三种方法
2014/02/11 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
材料采购员岗位职责
2013/12/17 职场文书
优秀小学生家长评语
2014/01/30 职场文书
医院领导班子整改方案
2014/10/01 职场文书
领导欢迎词致辞
2015/01/23 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
golang 实现菜单树的生成方式
2021/04/28 Golang