Как измерить количество операций, выполняемых процессором во время исполнения определенной программы с заданным алгоритмом под linux?

Добрый день, уважаемые!
Суть проблемы такова, разработал программу на настольном мощном компьютере, все летает и вообще хорошо. Нужно запустить то же самое на микрокомпьютере. Для этого нужно понимать какие вычислительные мощности мне необходимы на борту этого микрокомпьютера.
Наверняка есть какое то решение, которое делает примерно следующее:
cpu_prof ./mySuperProgram
total cpu operation: 100500
total time: 100ms

Я решил, что нужно замерить количество операций процессора, производимых за время выполнения программы и интервал времени. И исходя из этого думать, сколько MIPSов нужно на процессоре микрокомпьютера (мипа OrangePI итп).
Есть ли специальные утилиты, которые говорят сколько ресурсов пришлось именно на конкретное приложение?

Так же интересно было бы узнать, какие средства измерения производительности есть под Linux для c++ приложений, чтобы в случае сильной разницы между существующими процессорами и необходимым, можно было бы где то в коде поработать более тонко.
Спасибо всем!
  • Вопрос задан
  • 1172 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как измерить количество операций, выполняемых процессором во время исполнения определенной программы с заданным алгоритмом под linux?

perf stat <программа с её аргументами>
Например:
$ perf stat ls
...
 Performance counter stats for 'ls':

          2.287765 task-clock                #    0.666 CPUs utilized          
                36 context-switches          #    0.016 M/sec                  
                 0 cpu-migrations            #    0.000 K/sec                  
               283 page-faults               #    0.124 M/sec                  
         3,555,075 cycles                    #    1.554 GHz                     [67.11%]
         2,620,681 stalled-cycles-frontend   #   73.72% frontend cycles idle    [78.12%]
         2,041,963 stalled-cycles-backend    #   57.44% backend  cycles idle   
         1,807,743 instructions              #    0.51  insns per cycle        
                                             #    1.45  stalled cycles per insn
           356,700 branches                  #  155.916 M/sec                  
            14,920 branch-misses             #    4.18% of all branches         [58.70%]

       0.003432740 seconds time elapsed
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
А что такое микрокомпьютер?
Нужно понимать, что если там архитектура та же, и бинарник тот же но просто проц менее мощный, то разницы в MIPS в общем-то и нет, за исключением расходов на операционку.

Если архитектура другая, то и бинарник будет другой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы