Есть ли подобный инструмент для Linux, который работает как Shark на Mac OS X?
Решение
OProfile - это инструмент, который выполняет профилирование на основе выборки как ваше приложение, так и системные вызовы. Это позволяет увидеть подробную информацию о том, где он проводит время. У него нет графического интерфейса, но есть несколько внешних интерфейсов, которые позволят вам обрабатывать информацию из прогонов.
Я широко использовал его как для настольных приложений, так и для встраиваемых систем. Для интерпретации результатов требуется немного усилий, но вывод графов действительно полезен здесь.
Другие советы
Расширяя другой ответ, я использую опцию valgrind «callgrind» ( 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 раз медленнее), но результаты, которые вы получаете, намного точнее, чем у акулы. Я склонен использовать оба, поэтому я могу получить как можно больше информации!
Вероятно, вы можете попробовать Valgrind ( http://valgrind.org/ ). У них есть инструменты профилирования как во время выполнения, так и во время компиляции.
Немного поздно, чтобы ответить на этот вопрос, но самый близкий ответ - Zoom . Некоторые из команды Акулы работали над этим.