1

私は本当に正規表現などの速度をテストしたいと思っていましたが、php.netには次の例があります:

$time_start = microtime(true);

// Sleep for a while
usleep(100); // Or anything for that matter..

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

編集: 私が意味したのは、usleep() の代わりに関数の大規模なループを再生することでした。常に 1 未満の非常に乱数が表示されます。ベンチマークに値するものは何も表示されません!

4

3 に答える 3

1

タイマーはそのようなものです。関数をループで囲みます。マイクロ秒を測定する場合は 10^6 回、ミリ秒を測定する場合は 10^3 回実行します。精度が 2 桁を超えるとは思わないでください。

于 2010-02-01T14:49:12.580 に答える
1

再現できず、も私より速いコンピューターを持っていません。16 スレッドの実行、8 コア、i7 アーキテクチャ。PHP ビルドまたは OS が最適ではない必要があります。これはコードを正確に実行しています。

`--> php tmp.php
0.00011587142944336 秒で何もしなかった
.-(/tmp)------------------------------------------------ -------(疫病@パンデミック)-

これは usleep(1000000)... (1秒)

`--> php tmp.php
1.0000479221344 秒で何もしなかった
.-(/tmp)------------------------------------------------ -------(疫病@パンデミック)-

参考までに、私は PHP 5.3.0 を使用していましたが、(この場合) 5.0 を過ぎても違いはありません。

コードの実行に 1 秒もかかりませんか? もしそうなら、それはあなたのベンチマークを説明します。記事のために何かをプロファイリングするとき、ルーチンを何万回も、時には何百万回も実行します。最近のコンピューターは高速です。

「ランダム」部分に関する限り、これが、大規模な反復のいくつかのサンプルを取得し、それらを一緒に平均化する理由です。そこに標準偏差を入れても問題ありません。また、テスト中に MP3 をストリーミングしたり、ビデオを再生したりしないでください。:p

于 2010-01-31T06:05:36.747 に答える
1

usleep 関数にはマイクロ秒単位の時間が必要です。非常に低い値を指定しています。値を増やしてみてください。

usleep(2000000); // wait for two seconds

usleep 関数は、Windows システムでは扱いにくいことも知られています。

または、パラメーターとして秒を指定して sleep 関数を使用することもできます。

sleep(10); // wait for 10 seconds
于 2010-01-31T06:02:20.013 に答える