したがって、gettimeofdayを使用してコード実行の経過時間を調べようとしています。しかし、私が標準出力に出力するとき、私はこの非常に大きな数を取得します。実行にはわずか1秒しかかかりませんが、出力にはかなりの時間がかかります。gettimeofdayを使用して経過時間をミリ秒単位で調べようとしています
struct timeval start, end;
gettimeofday(&start, NULL);
//code
gettimeofday(&end, NULL);
printf("Elapsed Time = %ld\n", (end.tv_sec - start.tv_sec) + ((end.tv_usec - start.tv_usec)/1000000.0);
コードは、1秒未満で実行されるが、私の出力は、 - > 140734185085712
「end.tv_usec」から 'start.tv_usec'を減算するだけでは、43から19を計算するときに3から9を引くことはできません。 –
@SteveSummit:可能です。 43 - 19は '(4-1)* 10 +(3-9)'です.3-9から得られる-6は最初の最初のビットから正しい答えに30を減らすために必要なものです。 –
ええ、私はあまりにもすばやくコメントしたと思いますが、私は本当の問題を完全に逃しました。私の防衛では、 'struct timeval'の' tv_usec'フィールドが符号なしだったとすると、アンダーフローに問題があるかもしれません。 (しかし、通常は署名されているので気にしないでください) –