このプログラムの実行には2.34秒かかりますが、gprofによると1.18秒しかかかりません。他の場所で回答を読んだことがありますが、たとえばプログラムがI / Oバウンドの場合、gprofが間違っている可能性があることを示唆していますが、このプログラムは明らかにそうではありません。
これは、私がプロファイリングしようとしている便利なプログラムでも発生します。これは、この些細なテストケースに固有のものではありません。
(また、この場合、gprofは、main()がプログラムの実行時間の100%以上を占めると言っています。これはかなりばかげたバグですが、実際には問題を引き起こしません。)
$ cat test.c
int main() {
int i;
for (i=0;i<1000000000;i++);
}
$ gcc test.c -o test
$ time ./test
real 0m2.342s
user 0m2.340s
sys 0m0.000s
$ gcc test.c -o test -pg
$ time ./test
real 0m2.342s
user 0m2.340s
sys 0m0.000s
$ gprof test |head
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
101.33 1.18 1.18 main
% the percentage of the total running time of the
time program used by this function.