使用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基础知识:类与对象(5) static
Dec 13 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 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结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
浅谈node的事件机制
2017/10/09 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python简单贪吃蛇开发
2019/01/28 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
前厅部经理岗位职责范文
2014/02/04 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
运动会的口号
2014/06/09 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL