问题描述
我不确定读取 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 (将#修改为@)