2013-10-14 130 views
1

我有這樣一段代碼Perl的睡眠和時間測量

my $time_start = time; 
sleep 5; 
my $time_diff = time - $time_start; 
print "time elapsed: $time_diff"; 

的代碼大多是印刷5如預期,但有時它打印4.什麼會possibily引起的?是罪魁禍首的睡眠,還是時間本身的測量方式,有時候可能會導致不太精確的值?

+0

也許你應該使用'Time :: HiRes'模塊,如果精度很重要的話。 – TLP

回答

6

perldoc -f sleep

在一些舊系統中,可能睡了一整秒不到你的要求是什麼,這取決於如何計算秒。大多數現代系統總是睡眠的全部數量。然而,它們看起來睡眠時間可能比這更長,因爲您的進程可能不會在繁忙的多任務系統中立即安排。