c++ - 固有滴答计数,无需外部 api 的良好性能测量

标签 c++ c performance-testing

采取最少的步骤来质疑给定代码的执行情况(快速的),不是 那个最小的单位,最精细的测量?

#pragma intrinsic(__rdtsc)

int main(void)
{
    ULONGLONG t1,t2;

    t1= __rdtsc();
    work();
    t2= __rdtsc();
    std::cout<<t2-t1<<std::endl;
}

最佳答案

手册页,位于:http://linux.die.net/man/3/clock_gettime给出了所有的细节。

你想调用clock_gettime()函数

要为您的流程获取时间,请使用:

 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, struct timespec * );

或者当前线程使用:

 clock_gettime(CLOCK_THREAD_CPUTIME_ID, struct timespec * );   

成功返回 0,失败返回 -1(在这种情况下 errno 被适当设置)。

结构 timespec 定义为:

struct timespec 
{
    time_t   tv_sec;        /* seconds */
    long     tv_nsec;       /* nanoseconds */
};

以上都在头文件中定义:time.h

关于c++ - 固有滴答计数,无需外部 api 的良好性能测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33311981/

相关文章:

testing - 如何通过命令提示符从 HAR 文件生成 Gatling 模拟类

java - 添加计数器,该计数器在每次 http 请求时都会增加

c++ - 屏幕空间到世界空间

c++ - 未知字符被添加到字符串的最后

python - 扩展一个以 C 对象作为参数的 Python 函数

c - 使用 C 在 Linux 中轮询新文件的目录 - 一旦它出现,我是否需要等到它可以使用?

testing - Sitecore 网站的性能测试

c++ - 无法将成员变量添加到c++类

c++ - C++ 中的文件处理 : updating a line

c - 释放我创建的双向链表