ホームページ >バックエンド開発 >PHPチュートリアル >ltrace ツールを使用して PHP ライブラリ関数呼び出しをトレースする方法

ltrace ツールを使用して PHP ライブラリ関数呼び出しをトレースする方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-29 08:51:491291ブラウズ

この記事の例では、ltrace ツールを使用して PHP ライブラリ関数呼び出しをトレースする方法を説明します。詳細は次のとおりです:

システムコールを追跡するための strace の使用にはすでに慣れているかもしれませんが、今日はライブラリ関数を追跡するための ltrace というツールを紹介します

たとえば、私はこの作品を持っています。 PHP コード

test.php:

<&#63;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;
 }
&#63;>

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 プログラミングのすべての人に役立つことを願っています。

上記では、ltrace ツールを使用して PHP ライブラリ関数の呼び出しを追跡する方法を、トレース内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。