我試圖找出我寫的C程序的用戶時間(在Linux機器上)。目前我在代碼的開頭調用gettimeofday()一次,最後調用一次。我使用timeval結構和difftime(stop.tv_sec,start.tv_sec)來獲得經過的秒數。這會返回整秒,如「1.000000」。但是,我的項目要求我的程序在幾秒鐘內以微秒精度定時,例如「1.234567」。我怎樣才能找到這個值?我知道gettimeofday()也會在.tv_usec中記錄微秒,但我不確定如何使用此值並正確格式化。Ç - 我的計時方案秒,微秒級精度上
1
A
回答
0
使用timersub
功能。它有三個參數:第一個是初始時間,第二個是最後一個,第三個是結果(差異)。所有這三個參數都是指向timeval
結構的指針。
0
嘗試把初始時間入庫然後減去從最後的時候,你就完成了。
storedValue = timer.tv_sec + 0.000001 * timer.tv_usec
timer.tv_sec + 0.000001 * timer.tv_usec - storedValue
0
如果你想微秒:
long long usec;
usec = tv.tv_sec;
usec *= 1000000;
usec += tv.tv_usec;
如果你想分數秒[浮點]:
double asec;
asec = tv.tv_usec;
asec /= 1e6;
asec += tv.tv_sec;
下面是一些功能齊全:
// tvsec -- get current time in absolute microseconds
long long
tvsec(void)
{
struct timeval tv;
long long usec;
gettimeofday(&tv,NULL);
usec = tv.tv_sec;
usec *= 1000000;
usec += tv.tv_usec;
return usec;
}
// tvsecf -- get current time in fractional seconds
double
tvsecf(void)
{
struct timeval tv;
double asec;
gettimeofday(&tv,NULL);
asec = tv.tv_usec;
asec /= 1e6;
asec += tv.tv_sec;
return asec;
}
注意:如果你想要更高的精度(例如,納秒),你可以使用clock_gettime(CLOCK_REALTIME,...)
和應用類似的轉換
相關問題
- 1. java.sql.Timestamp以微秒級精度字符串
- 2. SqlAlchemy mysql毫秒或微秒精度
- 3. 窗口微秒計算精度
- 4. Qt QDateTime微秒精度
- 5. QT解析時間戳與微秒級精度
- 6. 如何以微秒精度計算操作時間
- 7. sybase上的日期時間列上的納秒級精度
- 8. Actionscript 3高精度時間方法(微秒)?
- 9. Matplotlib在x軸刻度上顯示多餘的微秒精度
- 10. 爲什麼MySQL不支持毫秒/微秒精度?
- 11. 跨平臺微秒精確時間戳
- 12. 以毫秒級精度返回time.now
- 13. SDL_GetTicks()精度低於毫秒級
- 14. linux的時間命令微秒或更好的精度
- 15. 格式時間從秒到毫秒:秒:毫秒:微秒
- 16. MySQL的:插入當前時間戳和微秒精度
- 17. 在django和javascript之間傳遞datetime時保持微秒精度
- 18. 的Java毫秒精度
- 19. 精度爲毫秒的Python時間戳
- 20. 更精確的計時器比秒錶?
- 21. 秒和微秒(Unix時間)到DateTimeOffset
- 22. 從毫秒轉換爲微秒並在C中存儲雙精度
- 23. PHP日期時間由負UNIX時間戳與微秒毫秒/微秒
- 24. 獲取時間時,分,秒,毫秒,微秒
- 25. 以微秒爲單位計時功能
- 26. Qt微秒計時器實現
- 27. 經過時間20毫秒精度
- 28. 配置Windows時間高(亞秒)精度
- 29. 倒計時秒數:毫秒
- 30. Android精密時計用毫秒
根本就不能忽視'tv_usec'-結構成員,但其中包括在計算? – Ctx
如果您真的獲得該分辨率,這是特定於操作系統的。 – Olaf