2011-05-30 64 views
4

您好我想獲取當前時間,包括在flex 4.5中使用的actionscript 3中的納秒數。 任何人都可以幫助我?用actionscript 3獲得納秒的時間

+0

只是出於好奇,給定您的應用程序需要幾納秒? – prototypical 2011-05-30 16:53:24

+0

我需要構建一個iOS(本機)和Android(Flex)客戶端,用於基準測試不同的消息格式。而且客戶端的一些反序列化過程需要1ms以內,因此該操作的持續時間似乎需要0ms – Siebe 2011-05-30 18:48:03

回答

7

ActionScript不公開精確的計時器。

+0

是的,我很擔心這一點。 – Siebe 2011-05-30 11:13:53

+2

我們是否會相信一段時間被任何*計算機稱爲精確到毫微秒?我想不是。這就像使用樹木環測量日子一樣。 – pavium 2011-05-30 11:17:45

+0

@pavium,無論精確的測量,都有比其他定時器更準確的定時器。 ActionScript不會公開任何其他環境中可用的高頻計時器。 – 2011-05-30 13:20:51

9

Flash Player中可用的最小時間量度爲毫秒。

爲了得到當前的時間只需要創建新的Date對象:

var currentTime:Date = new Date(); 

hereDate類的更多的文檔。

0

我覺得commont電腦不支持更小的時間度量,然後mileseconds

+0

我的iOS客戶端具有請求納秒的功能 – Siebe 2011-05-30 12:34:29

+0

測量結果小於毫秒。不是納秒,而是介於兩者之間。例如,你可以在.NET中使用Stopwatch,這取決於操作系統,比毫秒更精確。 – 2011-05-30 16:28:30

0

我不知道是否有人已經做到了這一點,但你可以創建一個Socket接口的NTP服務器。

您不需要執行整個協議;你可以做什麼ntpdate來搶佔時間。自從我直接與協議合作以來,這已經很長時間了,但我認爲這個任務並不困難。

+1

如果他需要納秒精度來請求網絡上的任何事情,感覺就像是錯誤的方式去做事情。 – grapefrukt 2011-05-30 14:45:55

+0

頭腦中的想法並沒有把它變成答案。如果可用,我實際上正考慮連接到本地實例。 – mpdonadio 2011-05-30 16:04:38

0

你不能在Flex中獲得非秒數,實際上沒有太多的語言提供納秒作爲時間跨度的結果。最可能得到的是「ticks」,它主要是爲具有本機代碼執行的語言提供的,但它不直接提供給腳本語言。

最好的辦法是有一個毫秒的差異,然後將結果放大到比較長的運行時間(比如10或甚至100倍多的測試),這將帶來更接近預期的結果。

0

當我試圖在微秒內測量某些東西時,我循環了1000次,並且減去了實際的for循環所花費的時間。我會得到接近微秒的東西。

var startTime:int = new Date().valueOf(); 
for(var ii = 0;ii<1000;ii++) 
{ 
    //do something here  
} 
var endTime:int = new Date().valueOf(); 
trace(endTime-startTime); 

我想你可以循環1 000 000次,以獲得納秒,但你將不得不等待一段時間,循環完成。

+0

這是非常錯誤的,因爲getMilliseconds返回日期的毫秒部分。不是總毫秒。它總是在0.999之間 – Gluip 2012-12-23 16:08:31