使用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基础学习之流程控制的实现分析
Apr 28 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
orm获取关联表里的属性值
Apr 17 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
PHP7变量处理机制修改
Mar 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
JAVA/JSP学习系列之七
2006/10/09 PHP
Email+URL的判断和自动转换函数
2006/10/09 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
PHP自定义多进制的方法
2016/11/03 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
简单了解Django ContentType内置组件
2019/07/23 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
客户经理竞聘演讲稿
2014/05/15 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
信用卡工作证明模板
2014/09/14 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
营业用房租赁协议书
2014/11/26 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
公司安全管理制度范本
2015/08/05 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby