使用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 json_encode值中大括号与花括号区别
Sep 30 PHP
php日历制作代码分享
Jan 20 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
10个简化PHP开发的工具
Dec 25 PHP
php中Snoopy类用法实例
Jun 19 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
php实现文件上传基本验证
Mar 04 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中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript StringBuilder类实现
2008/12/22 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
js分页工具实例
2015/01/28 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python生成随机图形验证码详解
2017/11/08 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
编辑求职信样本
2013/12/16 职场文书
《胡杨》教学反思
2014/02/16 职场文书
检查接待方案
2014/02/27 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
代收款委托书范本
2014/10/01 职场文书
办公室岗位职责
2015/02/04 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
基于Redission的分布式锁实战
2022/08/14 Redis