使用gcc确定C代码所需的CPU时间?

时间:2011-11-17 19:15:01

标签: c gcc profiling

我正在使用gcc编译器来编译C程序。如何测量某段C代码或特定语句执行所需的确切CPU时间?

2 个答案:

答案 0 :(得分:3)

如果原始计数器(约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>功能来获得更高分辨率的时钟。

答案 1 :(得分:1)

您需要应用程序的执行配置文件。在编译和编译时,您需要将-pg选项传递给GCC。链接,然后通过gprof运行程序。请参阅Brian J. Gough的 GCC简介中的this section,以获得该过程的简短概述。