使用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适配器模式介绍
Aug 14 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python标准库内置函数complex介绍
2014/11/25 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
Python加速程序运行的方法
2020/07/29 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
JAVA程序员面试题
2012/10/03 面试题
品管员岗位职责
2013/11/10 职场文书
求职信模板
2014/05/23 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
医院党建工作总结2015
2015/05/26 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server