使用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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
PHP伪造referer实例代码
Sep 20 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
php显示时间常用方法小结
Jun 05 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
React简单介绍
2017/05/24 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
js代码实现轮播图
2020/05/04 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
Python MD5加密实例详解
2017/08/02 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python 项目转化为so文件实例
2019/12/23 Python
Python递归函数特点及原理解析
2020/03/04 Python
Java的for语句中break, continue和return的区别
2013/12/19 面试题
工程总经理工作职责
2013/12/09 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
体育活动总结
2015/02/04 职场文书
财务个人年度总结范文
2015/02/26 职场文书
教师师德表现自我评价
2015/03/05 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
交通安全学习心得体会
2016/01/18 职场文书
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL
Win10 Anaconda安装python-pcl
2022/04/29 Servers
使用scrapy实现增量式爬取方式
2022/06/21 Python