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)
は、関数の実行がわずか0.5秒で終了したことを示しています(DECODING TIME = 0.455443
)。これは私にとって非常に混乱しています。
私は以前にこのclock_t
手法を使用してプログラムの実行時間を測定しましたが、その違いはこれまでになく大きくなっています。これはクロスコンパイラが原因ですか。ちなみに、シミュレータはわずか500MHzで動作するDSPプロセッサをシミュレートしているため、エラーの原因となっているDSPプロセッサとCPUのクロック速度の違いがCLOCKS_PER_SECの測定です。