перф сообщает огромные цифры по простой программе - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь войти в 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? Или просто совершенно не понимаешь, что должен означать результат?

...