Профилирование встроенного приложения - PullRequest
5 голосов
/ 20 июля 2010

У меня есть приложение, которое работает на встроенном процессоре (ARM), и я хотел бы профилировать приложение, чтобы получить представление о том, где оно использует системные ресурсы, такие как процессор, память, ввод-вывод и т. Д. Приложение работаетна вершине Linux, так что я предполагаю, что есть несколько доступных приложений для профилирования.У кого-нибудь есть предложения?

Спасибо!

edit: я должен также добавить версию Linux, которую мы используем, несколько устаревшую (2.6.18).К сожалению, я не могу сейчас это контролировать.

Ответы [ 4 ]

2 голосов
/ 20 июля 2010

Как сказал Боба, gprof и valgrind полезны.Вы также можете попробовать OProfile .Если ваше приложение находится в C ++ (как указано тегами), вы можете рассмотреть возможность отключения исключений (если это позволяет ваш компилятор) и избегания динамических приведений, как упомянуто выше sashang.Смотрите также Embedded C ++ .

2 голосов
/ 20 июля 2010

если ваш Linux не очень ограничен, тогда вы можете найти gprof и valgrind полезными

0 голосов
/ 20 июля 2010

gprof может вас разочаровать.

Если программа, которую вы тестируете, достаточно велика, чтобы быть полезной, то есть вероятность, что дерево вызовов может быть сокращено, поэтому лучшие возможности дляоптимизация - это вызовы функций / методов, которые вы можете удалить или избежать.Эта ссылка показывает хороший способ их найти.

Многие люди подходят к этому как к некоему иерархическому процессу измерения времени.Или вы можете просто поймать это в действии, что я и делаю.

0 голосов
/ 20 июля 2010

В соответствующей заметке рабочая группа C ++ сделала технический отчет о стоимости производительности различных функций языка C ++. Например, они анализируют стоимость динамического вещания на один или два уровня. Отчеты здесь http://www.open -std.org / jtc1 / sc22 / wg21 / docs / TR18015.pdf и могут дать вам некоторое представление о том, где могут быть болевые точки во встроенном приложении.

...