Я пытаюсь войти в C оптимизацию. При запуске perf отчеты для меня не имеют смысла.
Я создал тестовую программу:
int main()
{
return 0;
}
Скомпилировал ее: gcc test.c -o test -std=c99 -O2 -lm
И запустил perf:
perf stat -B -r 20 -e "cycles,instructions,cache-references,cache-misses,branches,branch-misses,cpu-clock,task-clock,faults,cs,migrations,alignment-faults" test
Это вывод:
Performance counter stats for 'test' (20 runs):
918.130 cycles # 1,640 GHz ( +- 0,75% )
871.395 instructions # 0,95 insn per cycle ( +- 0,31% )
35.793 cache-references # 63,926 M/sec ( +- 0,90% )
7.897 cache-misses # 22,062 % of all cache refs ( +- 3,81% )
176.129 branches # 314,562 M/sec ( +- 0,26% )
7.300 branch-misses # 4,14% of all branches ( +- 1,04% )
0,56 msec cpu-clock # 0,648 CPUs utilized ( +- 3,87% )
0,56 msec task-clock # 0,648 CPUs utilized ( +- 3,87% )
59 faults # 0,106 M/sec ( +- 0,35% )
0 cs # 0,000 K/sec
0 migrations # 0,000 K/sec
0 alignment-faults # 0,000 K/sec
0,0008638 +- 0,0000357 seconds time elapsed ( +- 4,13% )
Я не уверен, что что-то упустил, но я не могу найти причину, по которой это имело бы смысл программа, которая возвращает 0, чтобы иметь 871 тысячу инструкций, 7 тысяч ошибок кэша и 176 тысяч веток.
Я что-то не так делаю при запуске perf? Или просто совершенно не понимаешь, что должен означать результат?