我正在使用 GCC 和专有的 DSP 交叉编译器运行 C 程序来模拟一些功能。我正在使用以下代码来测量程序特定部分的执行时间:
clock_t start,end;
printf("DECODING DATA:\n");
start=clock();
conv3_dec(encoded, decoded,3*length,0);
end=clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
printf("DECODING TIME = %f\n",duration);
我的程序中定义的函数在哪里conv3_dec()
,我想找到这个函数的运行时。
现在的问题是,当我的程序运行时,conv3_dec()
函数运行了将近 2 个小时,但输出printf("DECODING TIME = %f\n",duration)
显示函数的执行仅在半秒 ( DECODING TIME = 0.455443
) 内完成。这让我很困惑。
我以前曾使用该clock_t
技术来测量程序的运行时间,但差异从未如此巨大。这是由交叉编译器引起的吗?顺便说一句,模拟器模拟了一个运行频率仅为 500MHz 的 DSP 处理器,因此 DSP 处理器的时钟速度差异和我的 CPU 导致错误是测量 CLOCKS_PER_SEC。