使用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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
PHP 简单日历实现代码
Oct 28 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
php生成高清缩略图实例详解
Dec 07 PHP
PHP的几个常用加密函数
Feb 03 PHP
php技巧小结【推荐】
Jan 19 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 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 json_encode奇怪问题说明
2011/09/27 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
php里array_work用法实例分析
2015/07/13 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python迭代用法实例教程
2014/09/08 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python实现AES加密和解密
2019/03/27 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
带病坚持工作事迹
2014/05/03 职场文书
启动仪式策划方案
2014/06/14 职场文书
感恩教育月活动总结
2014/07/07 职场文书
党员个人对照检查材料
2014/10/01 职场文书
建党伟业电影观后感
2015/06/01 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏