ホームページ >バックエンド開発 >PHPチュートリアル >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/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 チュートリアルに興味のある友人に役立つことを願っています。