我想存储事件时间。 我发现了这两个函数,但不知道哪一个更快。哪一个更快,getimeofday或clock_gettime?
1
A
回答
3
这取决于你的系统;没有哪个标准更快。我的猜测是他们通常都是以相同的速度。 gettimeofday
是比较传统的,如果你希望你的代码可以移植到旧系统上,这可能是一个不错的选择。 clock_gettime
有更多的功能。
-2
看看这个discussion。它看起来质量很好,与你可能要查找的有点过时的东西非常接近。
4
int main()
{
struct timespec tp;
struct timeval tv;
int i=0;
int j=0;
for(i=0; i < 500000; i++)
{
gettimeofday(&tv, NULL);
j+= tv.tv_usec%2;
clock_gettime(CLOCK_HIGHRES, &tp);
j+=tp.tv_sec%2;
}
return 0;
}
%Time Seconds Cumsecs #Calls msec/call Name
68.3 0.28 0.28 500000 0.0006 __clock_gettime
22.0 0.09 0.37 500000 0.0002 _gettimeofday
7.3 0.03 0.40 1000009 0.0000 _mcount
2.4 0.01 0.41 1 10. main
0.0 0.00 0.41 4 0. atexit
0.0 0.00 0.41 1 0. _exithandle
0.0 0.00 0.41 1 0. _fpsetsticky
0.0 0.00 0.41 1 0. _profil
0.0 0.00 0.41 1 0. exit
这在Solaris 9 v440盒子上运行。在您自己的盒子上分析代码。这个结果与之前提供的链接中引用的结果完全不同。换句话说,如果存在差异,那将是由于隐含的原因。
2
你不在乎。
如果你经常打电话给他们其中任何一个,那么它很重要,你做错了。
配置文件代码导致特定的性能问题,并检查它在那里花费的时间。如果它太多,可以考虑重构它以减少调用函数的次数。
0
取决于常数,用于clock_gettime()
。对于最快的时钟,常量有CLOCK_*_COARSE
。这些定时器是最快的,但并不精确。
gettimeofday()
应返回相同的clock_gettime(CLOCK_REALTIME)
此外,基准测试结果取决于架构(Linux版)。由于Linux有专门的技术(VDSO)来消除系统调用以获得时间。这些技术在X86-32bit架构上无法使用。请参阅strace
输出。
相关问题
- 1. 哪一个更快,C#或Vb.net?
- 2. 哪一个更快? Swift的.filter或NSPredicate?
- 3. 哪一个更快:Math.abs(value)或value * -1?
- 4. 哪个更快 - WebSockets或Ajax?
- 5. 哪个更快,GDI +或libpng?
- 6. 哪个更快? Statement或PreparedStatement
- 7. 哪个更快? NSXMLParser或KissXML
- 8. 哪个更快,XPath或Regexp?
- 9. 更新或删除哪个更快?
- 10. 哪个更快?插入或更新?
- 11. loadHTML&loadHTMLFile,哪一个更快?
- 12. 哪个更快?
- 13. 。哪个更快?
- 14. 哪个更快?
- 15. 哪个更快?
- 16. 哪个更快?
- 17. 哪个更快/更好:哪里更新或合并?
- 18. 哪个布尔更快? <或<=
- 19. 哪个更快:Intent.putExtra或SQLite查询?
- 20. 哪个更快:计算或分配
- 21. 哪个更快$ variable []或array_push($ variable,$ newValue)?
- 22. Java:哪个更快,数组或对象?
- 23. OpenGL:哪个更快 - GL_POLYGON或GL_TRIANGLE_FAN?
- 24. 哪个更快s + ='a'或s = s +'a'python
- 25. 哪个更快,redis LPUSH或RPUSH?
- 26. charAt()或子字符串?哪个更快?
- 27. Java Set - 哪个更快Set.add()或Set.addAll()?
- 28. 哪个更快:ldc.i4/ldstr或ldloc?
- 29. 哪个更快,XML + XSL或CLR + DataBinding
- 30. 哪个更快合并或ISNULL?
如果你用这种方式回答问题,你做错了:-)也许他想写他自己的分析器?这些函数的执行时间本身可能会影响它们传递的结果。 – hirschhornsalz 2016-04-15 10:04:08