我很好奇C++中是否有内置函数来测量执行时间? 我现在正在使用Windows。在Linux中它很容易...找到C++执行时间
5
A
回答
4
据我所知,Windows上的最佳方式是使用QueryPerformanceCounter
和QueryPerformanceFrequency
。
QueryPerformanceCounter(LARGE_INTEGER*)
将性能计数器的值放入传递的LARGE_INTEGER中。
QueryPerformanceFrequency(LARGE_INTEGER*)
将性能计数器递增的频率放入传递的LARGE_INTEGER中。
然后,您可以通过记录计数器开始执行,然后在执行完成时记录计数器来查找执行时间。从最后减去开始以获得计数器的更改,然后除以频率以获得以秒为单位的时间。
LARGE_INTEGER start, finish, freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
// Do something
QueryPerformanceCounter(&finish);
std::cout << "Execution took "
<< ((finish.QuadPart - start.QuadPart)/(double)freq.QuadPart) << std::endl;
2
这是在Windows下很容易的事 - 事实上这是两个std::clock, d相同的功能<ctime>
1
C++ efined已经为高粒度测量代码执行时间没有内置功能,你必须诉诸平台特定的代码。对于Windows,请尝试QueryPerformanceCounter:http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx
1
您应该使用的函数取决于您需要的计时器的分辨率。其中一些提供10ms分辨率。这些功能更易于使用。其他人需要更多的工作,但提供更高的分辨率(并且在某些环境中可能会导致一些令人头疼的问题,尽管您的开发机器可能工作正常)。
http://www.geisswerks.com/ryan/FAQS/timing.html
该文章中提到:
- timeGetTime
- RDTSC(处理器功能,而不是操作系统的功能)
- QueryPerformanceCounter的
2
您可以使用Windows API功能GetTickCount()并比较st艺术和结束。分辨率在16毫秒的球场内。如果由于某种原因,您需要更细粒度的时机,您需要查看QueryPerformanceCounter。
0
相关问题
- 1. 执行程序时找不到DLL(C++)
- 2. 查找Mysqldump执行时间?
- 3. C++:问题找到代码执行时间
- 4. C++测量执行时间
- 5. 执行时间在C++中
- 6. 时钟() - 执行时间为c函数
- 7. “找不到JavaScript运行时。”在执行refinerycms命令期间
- 8. 查找方法的执行时间
- 9. 找出sandbox.open(url,null .....)执行时间
- 10. 查找时间差并执行条件
- 11. 查找执行时间subprocess.Popen蟒蛇
- 12. 如何在c#中查找编码执行时间?
- 13. 找到时间之间的差异c
- 14. 使用N个线程执行后查找执行时间
- 15. 如何找到一个C++可执行
- 16. C++算法的执行时间
- 17. C - 测量功能时间执行
- 18. 基于时间的C#执行方法#
- 19. C++编译时间函数执行
- 20. 10毫秒C++执行时间
- 21. C/Linux中的线程执行时间
- 22. 使用C#测量执行时间
- 23. 程序执行的C++测量时间
- 24. 如何控制执行时间C
- 25. (C++)合并排序执行时间
- 26. 如何找到执行Puppet清单的时间
- 27. 如何找到代码的统计和执行时间在Python
- 28. 无法在C(popen)中执行命令执行时间?
- 29. 任务执行时间高于定时器执行时间
- 30. 执行时间从-o0增加到-os ..so是指编译时间或执行时间的时间。