使用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 相关文章推荐
PHP操作文件方法问答
Mar 16 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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
PHP 的Opcache加速的使用方法
2017/12/29 PHP
详解json在php中的应用
2018/09/30 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
使用Python获取Linux系统的各种信息
2014/07/10 Python
Python随机生成彩票号码的方法
2015/03/05 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
详解Python 函数参数的拆解
2020/09/02 Python
工商管理本科毕业生求职信范文
2013/10/05 职场文书
纠纷协议书
2014/04/16 职场文书
奉献演讲稿范文
2014/05/21 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL