Мне нужно профилировать некоторый код, запускающий C++ в Linux. Можете ли вы, ребята, рекомендовать некоторые профилографыЧто такое простой в использовании прокси-сервер для C++ в Linux?
ответ
valgrind это хорошо знаю линукс профайлер
думал, что valgrind больше для утечки памяти проверка. Я пытаюсь увидеть, какие функции получаются и т. д. – shergill
использовать набор инструментов «callgrind» – dfa
Valgrind - это просто основа для создания динамических инструментов. Хотя, это стало синонимом Memcheck, инструмента, построенного на Valgrind.Callgrind довольно хорош в профилировщике. – Falaina
Я фанат Oprofile. Он включает в себя установку модуля ядра и немного кривую обучения, но он достаточно мощный и отлично работает для оптимизированных программ и программ без отладки символов.
Vtune - еще один очень мощный профилировщик от Intel. Я считаю, что версия Linux бесплатна для некоммерческого программного обеспечения.
Существует также набор инструментов Valgrind, предлагаемых dfa. Callgrind, вероятно, будет тем, кого вас больше всего интересует. Cachegrind (чей атрибут является подмножеством Callgrind) и Massif также интересны, но у меня нет опыта с последним.
+1 для oprofile, это не «простой инструмент» – dfa
Ха-ха, правда. Я, наверное, не должен так сильно звучать так просто :) Это, конечно, не так просто, как «запустить программу под ней» как инструменты Vtune и Valgrind, но я чувствую, что вы привыкли к этому довольно быстро. – Falaina
oprofile выглядит интересно - поддерживает x86_64? – LiraNuna
gprof - стандартный инструмент gnu для профилирования.
Google также имеет хороший профилировщик как часть google-perftools - которые включены в Debian/Ubuntu и, возможно, другие дистрибутивы.
Посмотрите на KCacheGrind, который является графическим интерфейсом до valgrind и делает его очень простым в использовании.
Использование gprof.
Просто скомпилируйте с флагом -pg
(я думаю (но не уверен), что вам нужно включить оптимизацию.) И используйте gprof для анализа файла gmon.out, который затем выполнит ваш исполняемый файл.
например:
gcc -pg -o whatever whatever.c
./whatever
gprof whatever gmon.out
То же самое с г ++ и каст.
Профилирование неоптимизированного кода немного бессмысленно, не так ли? Аналогично, код профилирования, который был сильно изменен с помощью -pg, часто вводит вас в заблуждение для оптимизации неправильных точек. – federal
Увеличить из RotateRight (http://www.rotateright.com) является то, что я использую. Он имеет функцию просмотра бабочек, и вы можете дважды щелкнуть любую функцию, чтобы погрузиться в исходный код или код asm. Постройте с помощью отладочной информации (-g), чтобы увидеть свой источник, но вы все равно должны построить и профиль оптимизированный код.
Просто дал этой программе выстрел, это действительно очень приятно! В настоящее время мой любимый профилировщик на Linux; однако стоит упомянуть, что для эффективного профилирования требуется создание кода с помощью '-fno-omit-frame-pointer'. –
Ссылка кажется мертвой. Кто-нибудь знает, где (или если) его можно найти в другом месте? –
Взгляните на Sysprof. Вы, скорее всего, уже имеете это распространение.
Обратите внимание, что все упомянутые профилировщики работают лучше всего, если ваше приложение скомпилировано с помощью указателей на рамки. То есть вы должны использовать -fno-omit-frame-pointer в командной строке gcc.
Вы должны добавить теги Linux и C++. Вероятно, вы получите лучший ответ и диапазон мнений. – Duck
Выглядит как дубликат http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux. –
например: likwid, LLTng, oprofile, valgrind, vtune, gprof, perf, gperftools, pTop – Shan