2010-01-31 103 views
1

我真的一直想測試正則表達式等的速度和php.net它有這個例子:PHP:函數的時間速度,但速度太快?

$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以下的非常隨機的數字。它沒有顯示任何值得的基準!

+0

您正在使用哪個PHP版本? – MitMaro 2010-01-31 06:00:33

回答

1

定時器就是這樣。圍繞函數進行循環。如果要測量微秒,則運行10^6次,如果需要毫秒,則運行10^3次。不要期望獲得超過2位的精度。

1

的usleep功能需要在微秒的時間,您指定價值很低,嘗試增加了:

usleep(2000000); // wait for two seconds 

usleep功能也被稱爲是棘手的Windows系統。

或者你可以簡單地使用睡眠功能以秒被指定爲它的參數如:

sleep(10); // wait for 10 seconds 
1

無法重現,並沒有一個有一個更快的電腦比我。 16個執行線程,8個核心,i7架構。您的PHP構建或操作系統必須是不理想的。這是完全運行你的代碼。

 
`--> php tmp.php 
Did nothing in 0.00011587142944336 seconds 
.-(/tmp)---------------------------------------------------([email protected])- 

這是usleep(1000000)...(1秒)

 
`--> php tmp.php 
Did nothing in 1.0000479221344 seconds 
.-(/tmp)---------------------------------------------------([email protected])- 

僅供參考,我使用的是PHP 5.3.0,而不是任何區別(在這種情況下)過去的5.0。

你的代碼是否比要比第二個要執行?如果是這樣,那就解釋你的基準。當我爲一篇文章介紹某些內容時,我會運行例行的萬次,有時甚至是數百萬次。現在電腦速度很快。就「隨機」部分而言,這就是爲什麼我需要幾次大型迭代的樣本並將它們平均到一起。把標準差也放在那裏也沒有什麼壞處。另外,請記住在測試時不要播放MP3或播放視頻。 :p