Есть ли подобный инструмент для Linux, который работает как Shark на Mac OS X? - PullRequest
7 голосов
/ 20 октября 2008

Shark в Mac OS X - отличный инструмент для профилирования приложения в работающей системе. Есть ли подобные инструменты для Linux?

OProfile похоже, что кто-то использовал это?

Ответы [ 4 ]

8 голосов
/ 02 декабря 2008

Расширяя еще один ответ, я использую опцию 'callgrind' valgrind (http://valgrind.org). Затем устанавливаю kcachegrind из KDE для хорошего интерфейса с графическим интерфейсом.

Как учебник манекена, выполните:

1) Скомпилируйте ваше приложение с отладочной информацией. Рекомендуется попробовать профилирование с включенной и выключенной оптимизацией, при выключенной оптимизации вы получите больше информации, но она может быть менее точной (в частности, крошечные функции могут занять больше времени, чем они заслуживают.

2) Выполнить с:

valgrind --tool=callgrind <name of your app> <your app's options>

Это должно привести к созданию файла с именем 'callgrind.something', который вы можете загрузить в kcachegrind.

Вы также можете посмотреть на:

valgrind --tool=cachegrind <name of your app> <your app's options>

Что даст вам информацию о том, как ваше приложение взаимодействует с кешем вашего процессора.

Обратите внимание, что хотя valgrind и shark похожи на похожие приложения, они работают совершенно по-разному. Когда вы запускаете приложение в valgrind, оно будет работать во много раз медленнее, чем обычно (часто более чем в 40 раз медленнее), но результаты, которые вы получаете, намного точнее, чем у акулы. Я склонен использовать оба, поэтому я могу получить как можно больше информации!

5 голосов
/ 07 декабря 2010

Немного поздно, чтобы ответить на этот вопрос, но самый близкий ответ - Увеличение . Некоторые из команды Акулы работали над этим.

5 голосов
/ 20 октября 2008

Возможно, вы попробуете Valgrind (http://valgrind.org/). У них есть инструменты профилирования как во время выполнения, так и во время компиляции.

2 голосов
/ 03 декабря 2008

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

Я широко использовал его как для настольных приложений, так и для встраиваемых систем. Для интерпретации результатов требуется немного усилий, но вывод графов действительно полезен здесь.

...