我试图找出我写的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