c ++如何编写函数以使用时间戳计数器测量函数性能

问题描述

我不确定读取 Intelx86 时间戳计数器的函数会是什么样子。我正在尝试衡量单个函数性能,因此我假设我需要 2 个函数

1 - void startFunctionCounter(int *cycleval)
2 - void endFunctionCounter(int *cycleval)

我提到了这个问题 Using Time stamp counter to get the time stamp 并提到了 __rdtsc()。但是我对 asm 不是很熟悉,也不确定 2 个函数应该是什么样子。我应该如何修改链接的帖子中的代码以使其符合我的需要?

谁能告诉我这应该怎么做?感谢任何帮助。先感谢您! :)

编辑:通过阅读链接文章,我做了类似的事情,但在编译时收到一条错误消息:

#include <stdio.h>
#include <stdint.h>
#include <intrin.h>
#include <x86intrin.h>


inline uint64_t readTSC() {
    uint64_t tsc = __rdtsc();
    return tsc;
}



void main(){
    double initTSC = readTSC(),finalTSC= 0;
    double array[5] = {5,6,4.6,1};
    double x=6.0;
    long deg = 3;
    double res = calcFun(array,x,deg);
    
    printf("hello there %f \n",res);
    finalTSC = readTSC();
    printf("hello timings \n 1: %f \n 2: %f",initTSC,finalTSC);

    
}

错误是:

/usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccqnytar.o:opt_poly.c:(.text+0x3f6): undefined reference to `readTSC'

我正在使用 GCC 编译器和 C 语言。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)