5ステップで完璧!PHPによるミリ秒計測の基本と応用テクニック

PHPでミリ秒を計測する方法の図解PHP
この記事は約6分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、PHPでのミリ秒計測が手軽に行えるようになります。

性能を改善するためには、処理にどれくらいの時間がかかっているのかを知ることが重要です。

そのための一つの方法が、このミリ秒計測です。

基本的な使い方から応用まで、具体的なコードと共にわかりやすく説明します。

●PHPとは

PHPは、Webサイトの開発で広く使われるサーバーサイドのスクリプト言語です。

HTMLと組み合わせて使用することが多く、動的なWebページを手軽に作成することができます。

●PHPにおけるミリ秒計測の基本

PHPでミリ秒を計測するための基本的な方法は、マイクロ秒(1秒の100万分の1)を使用します。

マイクロ秒をミリ秒(1秒の1000分の1)に変換することで、より精密な時間計測が可能になります。

○サンプルコード1:基本的なミリ秒計測

PHPでミリ秒を計測する基本的なコードを紹介します。

この例では、現在のマイクロ秒を取得し、それをミリ秒に変換しています。

// 現在のマイクロ秒を取得
$microtime = microtime(true);

// マイクロ秒をミリ秒に変換
$milliseconds = $microtime * 1000;

echo $milliseconds;

○サンプルコード2:処理時間の計測

次に、特定の処理がどれくらいの時間を要したかを計測する方法を紹介します。

この例では、処理前と処理後の時間を計測し、その差分をミリ秒で出力しています。

// 処理前のマイクロ秒を取得
$start = microtime(true);

// 何らかの処理(ここでは1秒間のスリープ)
sleep(1);

// 処理後のマイクロ秒を取得
$end = microtime(true);

// 処理にかかった時間(ミリ秒)を計算
$elapsed = ($end - $start) * 1000;

echo "Elapsed time: {$elapsed} ms";

●PHPでのミリ秒計測の応用例

前述の基本的なミリ秒計測の方法を応用することで、ループ処理の時間、データベースのクエリ実行時間、APIの応答時間といった、さまざまな処理の所要時間を計測することが可能になります。

ここでは、それぞれのケースについて、具体的なコードを提示し、その動作を詳細に説明します。

○サンプルコード3:ループ処理時間の計測

このコードでは、forループの処理時間を計測しています。

ここでは、1から1000000までカウントする単純なループ処理を行い、その所要時間をミリ秒で出力しています。

// ループ処理前のマイクロ秒を取得
$start = microtime(true);

// 1から1000000までカウントするループ
for ($i = 1; $i <= 1000000; $i++) {
    // do nothing
}

// ループ処理後のマイクロ秒を取得
$end = microtime(true);

// ループ処理にかかった時間(ミリ秒)を計算
$elapsed = ($end - $start) * 1000;

echo "ループ処理にかかった時間: {$elapsed} ms";

○サンプルコード4:データベースクエリの処理時間計測

次に、データベースへのクエリ実行時間を計測するコードを紹介します。

この例では、PDOを使ってMySQLデータベースに接続し、SELECTクエリを実行。

その実行時間をミリ秒で計測しています。ここで注意すべき点は、実際のコードでは、データベースのホスト名、ユーザ名、パスワード、そして使用するデータベース名を適切に設定する必要があるということです。

// PDOによるデータベース接続
$dbh = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// クエリ実行前のマイクロ秒を取得
$start = microtime(true);

// SELECTクエリの実行
$sth = $dbh->query('SELECT * FROM table_name');

// クエリ実行後のマイクロ秒を取得
$end = microtime(true);

// クエリ実行にかかった時間(ミリ秒)を計算
$elapsed = ($end - $start) * 1000;

echo "クエリ実行にかかった時間: {$elapsed} ms";

○サンプルコード5:API応答時間の計測

最後に、外部APIへのリクエストとその応答時間を計測するコードを示します。

この例では、cURLを使ってHTTPリクエストを送信し、そのレスポンスを待つ時間をミリ秒で計測しています。

特定のURLにGETリクエストを送ることで、APIの応答時間を計測できます。

// cURLセッションを初期化
$ch = curl_init('https://api.example.com');

// リクエスト前のマイクロ秒を取得
$start = microtime(true);

// URLに対する操作を実行
curl_exec($ch);

// リクエスト後のマイクロ秒を取得
$end = microtime(true);

// API応答時間(ミリ秒)を計算
$elapsed = ($end - $start) * 1000;

echo "API応答時間: {$elapsed} ms";

// cURLセッションを閉じる
curl_close($ch);

●注意点と対処法

PHPでミリ秒を計測する際には、いくつかの注意点があります。

それぞれの注意点とそれに対する対処法を解説します。

1.精度の問題

PHPにおける時間計測は、サーバーの負荷や他のプロセスの影響を受けるため、完全な精度を期待することは難しいです。

したがって、計測結果はあくまで目安として利用し、絶対的な数値として捉えないことが重要です。

2.サーバー環境

PHPの実行環境(特にサーバー環境)は、計測結果に大きく影響します。

例えば、同じコードをローカルの開発環境と本番環境で実行した場合、その実行時間は異なる可能性があります。

そのため、環境による影響を理解し、それを考慮に入れて分析することが必要です。

3.外部要因

ネットワークの遅延やデータベースサーバー、APIサーバーの状況等、自分の手の届かない要素も実行時間に影響を及ぼします。

特にAPI応答時間の計測などは、外部要因の影響を大いに受けます。そのため、計測結果を分析する際は、これらの外部要因を考慮に入れることが重要です。

これらの注意点を理解した上で、PHPでのミリ秒計測を行うことで、コードのパフォーマンスを理解し、最適化するための手がかりを得ることができます。

最適化の過程では、計測を繰り返し、それぞれの処理が要求されるパフォーマンスを満たしているかを確認することが重要です。

まとめ

以上、PHPでのミリ秒計測の方法とその応用例、そして注意点と対処法について解説しました。

ミリ秒計測は、ソフトウェアのパフォーマンスチューニングや、ボトルネックの特定に役立ちます。

しかし、計測結果はあくまで一つの参考指標であり、その結果を絶対的な数値として扱うことは適切ではありません。

いくつかの制限や注意点を理解した上で、このツールを活用することで、ソフトウェアのパフォーマンス改善に繋がる貴重な洞察を得ることができます。

PHPでのミリ秒計測を上手に活用し、より良いソフトウェア開発に役立ててください。