ans*_*shu 5 c simulator cross-compiling
我正在运行一个使用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);
Run Code Online (Sandbox Code Playgroud)
这里conv3_dec()是我的程序定义的功能,我想找到这个函数的运行时间.
现在的问题是,当我的程序运行时,conv3_dec()函数运行了将近2个小时,但是输出结果printf("DECODING TIME = %f\n",duration)显示函数的执行仅在半秒钟内完成(DECODING TIME = 0.455443).这对我来说非常困惑.
我之前使用过该clock_t技术测量程序的运行时间,但差异从未如此之大.这是由交叉编译器引起的吗?正如旁注所示,模拟器模拟仅以500MHz运行的DSP处理器,因此DSP处理器和CPU的时钟速度差异导致错误正在测量CLOCKS_PER_SEC.
对于像两个小时这样的持续时间,我不会太担心clock(),它对于测量亚秒持续时间更有用。
如果您想要实际经过的时间,只需使用time(),例如(为缺少的内容提供的虚拟内容):
#include <stdio.h>
#include <time.h>
// Dummy stuff starts here
#include <unistd.h>
#define encoded 0
#define decoded 0
#define length 0
static void conv3_dec (int a, int b, int c, int d) {
sleep (20);
}
// Dummy stuff ends here
int main (void) {
time_t start, end, duration;
puts ("DECODING DATA:");
start = time (0);
conv3_dec (encoded, decoded, 3 * length, 0);
end = time (0);
duration = end - start;
printf ("DECODING TIME = %d\n", duration);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
生成:
DECODING DATA:
DECODING TIME = 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21202 次 |
| 最近记录: |