PHPの実行時間を取得する。プログラムがあまりにも多い場合や、なんか遅いかも?という場合にPHPの実行時間を計測していきたいと思います。7月22日記事
目次
サーバも内部的に時間で動いています。そんな中で、サーバの時間をマイクロタイム単位で取得できれば、あとは引き算で計測するだけでできます。
microtime();
そして、()の中、いわゆる引数にtrueを使うと小数点の数字float型で返します。
<?php $start_time = microtime(true); /*プログラム開始*/ /*プログラム終了*/ $end_time = microtime(true); $result = $end_time - $start_time; print "<br>".$result."秒かかりました。"; ?>
<?php
$start_time = microtime(true);
/*プログラム開始*/
for($i = 1; $i <= 10000 ; $i++){
print $i;
}
/*プログラム終了*/
$end_time = microtime(true);
$result = $end_time - $start_time;
print "<br>".$result."秒かかりました。";
?>
<?php
$start_time = microtime(true);
/*プログラム開始*/
for($i = 1; $i <= 10000 ; $i++){
print $i."<br>";
}
/*プログラム終了*/
$end_time = microtime(true);
$result = $end_time - $start_time;
print "<br>".$result."秒かかりました。";
?>
100回ぐらいやらないと正確なデータがとれないかもしれませんが、とりあえず結果です。
| 回数 | BRなし | BRあり |
| 1 | 0.008934021 | 0.017646074 |
| 2 | 0.011970043 | 0.016313076 |
| 3 | 0.009063959 | 0.017118931 |
| 4 | 0.005344868 | 0.015038967 |
| 5 | 0.007961035 | 0.004641056 |
| 6 | 0.010595083 | 0.005411863 |
| 7 | 0.00889492 | 0.013128996 |
| 8 | 0.008177042 | 0.014132977 |
| 9 | 0.010121107 | 0.012089968 |
| 10 | 0.007774115 | 0.013499022 |
| 平均 | 0.008883619 | 0.012902093 |
このように平均がでたらt検定の流れ・・・が普通ですが、割愛します
8ケタの数字パスワードを探すプログラム。主にブルーとフォースアタックと言われています。適当に作ってみます。
※入力データのチェックなどは省きます。 自分専用コードです(笑)
index.phpでもindex.htmlでも・・・
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> </head> <body> <form action="check.php" method="post"> <p>8桁の数字のパスワードを入力してください。<input type="text" name="number"></p> <input type="submit" name="submit" value="送信"> </form> </body> </html>
check.php
<?php
$start_time = microtime(true);
$number = $_POST["number"];
for($i = 1; $i <100000000;$i++){
if($i == $number){
break;
}
}
$end_time = microtime(true);
$result = $end_time - $start_time;
print "<br>".$result."秒かかりました。";
echo "<br>パスワードは".sprintf("%08d", $i)."です。";
?>
数字がでかいほど当然計測時間が長くなります。むう。超簡単に書いたから7桁の数字いれられても8桁で返します・・・orz
99999999を入力してみる。
11.53734588623秒かかりました。 パスワードは99999999です。
スクリプト言語(php言語など)だとコンパイラ言語(C言語など)に比べ、遅いです。C言語で書けばもっと早い結果が出ると思います。
また、高性能なマシンならすぐ解析ができます。
パスワードは数字にしないようにしましょう。
以上