使用ltrace工具跟踪PHP库函数调用的方法
本文实例讲述了使用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/phptest.php(-c表示汇总)
会看到输出如下:
%timesecondsusecs/callcallsfunction --------------------------------------------------------- 95.027.41724036820146strtol 2.157.16039041317316memcpy 1.635.52264124022966free 0.672.27537422753741curl_global_cleanup 0.542.2354666173618__ctype_tolower_loc 0.162.12354711941778strrchr 0.171.5322246722836malloc 0.290.382083675678strlen
可以看到strtol几乎用去了执行时间的95.02%,瓶颈就找出来了。及PHP会在in_array()测试时试图将字符串行数字转换为long,这会耗费大量时间。所以只要将字符串都转换为整形即可大幅度提高效率。
ltrace真心是个好工具
希望本文所述对大家PHP程序设计有所帮助。