我正在使用gcc编译器来编译C程序。我如何测量C代码的特定部分或特定语句执行所需的确切CPU时间?使用gcc确定C代码所需的CPU时间?
回答
如果粗计数器(〜20ms的分辨率)是可以接受的,这是我的标准hacro:
#include <ctime>
#define CLOCK_TICK(acc, ctr) ctr = std::clock()
#define CLOCK_TOCK(acc, ctr) acc += (std::clock() - ctr)
#define CLOCK_RESET(acc) acc = 0
#define CLOCK_REPORT(acc) (1000. * double(acc)/double(CLOCKS_PER_SEC))
static std::clock_t tacc, tctr;
用法:
CLOCK_TICK(tacc, tctr);
do_something_critical();
CLOCK_TOCK(tacc, tctr);
std::cout << "This took " << CLOCK_REPORT(tacc) << "ms.\n";
在C++ 11可以使用<chrono>
功能来获得更高分辨率的时钟。
麻烦是,这会给你“墙”的时间; OP很可能需要CPU时间。这将需要与GCC的分析系统连接。 –
@jcsalomon:对,我明白了。在Linux上,你可以试试'getrusage()',它提供了你从'time'命令得到的分解。 –
@jcsalomon:在某些系统上(例如MS VC++),'clock'会返回挂钟时间,但是如果执行正确:“时钟函数返回实现对程序使用的**处理器 时间**的最佳近似值。 。“”(§7.23.2.1/ 3,强调增加)。 –
您需要应用程序的执行配置文件。在编译&链接时,您需要将-pg
选项传递给GCC,然后通过gprof运行该程序。请参阅Brian J. Gough的this sectionGCC简介以简要介绍该过程。
- 1. 部分代码的CPU运行时间
- 2. 确定伪代码的运行时间
- 3. 使用GCC预处理C代码
- 4. 在JAVA中测量部分代码的CPU使用时间
- 5. 如何确定Rails应用程序所需的cpu,ram?
- 6. 使用异步代码测量CPU密集时间
- 7. '锁'需要CPU时间吗?
- 8. 了解所需的C代码
- 9. 确定C#代码大小
- 10. 如何使用gcc包含所需的C库?
- 11. GCC无法编译正确的代码
- 12. 在gcc编译时如何在C++的汇编代码中使用C变量?
- 13. 找到代码视图所需的时间以呈现
- 14. 如何确定系统完全启动所需的时间?
- 15. C++:编译代码所需的转发类定义
- 16. 为什么在签署代码时需要使用时间戳
- 17. CUDA C - 使用clock()和cudaEvent的CPU和GPU执行时间,是否正确?
- 18. 确定CPU的操作码周期数
- 19. GCC源代码中的C语法
- 20. 所需的日历代码
- 21. 用于Objective-C代码的自定义编译时间变量?
- 22. gcc使用C++ 11标准,即使98明确指定
- 23. 确定所需的矢量
- 24. 如何确定使用相同宏的不同C++代码库?
- 25. 使用C++可移植计时代码的正确方法11
- 26. CPU负载和CPU温度的C++代码
- 27. gcc使用了多少遍代码?
- 28. 如何使用gcc编译SIMD代码
- 29. 使用gcc和SciTE编译代码?
- 30. 检查代码需要很长时间
google“gcc time code”[result](http://bytes.com/topic/c/answers/464044-gcc-time-h-problem) –
http://stackoverflow.com/questions/的重复项5644730/c-measuring-computing-time –