Я предполагаю, что нужно обнаружить код, который занимает значительное время и что вы можете оптимизировать его сэкономить. Это другая цель только от процедур синхронизации.
Я скептически отношусь к статическим анализаторам, потому что все зависит от входных данных.
Dynamic Instrument пытается измерить свойства функций, такие как: время автономной работы и общее время, абсолютное, среднее и процентное значение. Также подсчитывают количество вызовов и роль каждой процедуры в графе вызовов.
Динамические приборы (a la gprof) были де-факто стандартными в течение десятилетий, но это далеко не последнее слово. Во-первых, важно понимать, что большинство статистических данных, которые оно дает вам, не имеют смысла с точки зрения вашей первоначальной потребности.
В эти дни (IMHO) вам нужен профайлер пробоотбора, который отображает стек вызовов, а не только счетчик программ. Он должен отсчитывать время на стене, а не только время процессора. Образцы не нужно набирать на высокой частоте. Он должен подавлять выборку, когда приложение ожидает ввода пользователя. Он должен предоставлять информацию на уровне линии или инструкции, а не только на уровне функции. Самая важная статистика, которую он должен предоставить вам для строки кода, - это процент образцов, содержащих ее, поскольку это самая прямая мера времени, которое может быть сохранено, если эта линия оптимизирована.
Несколько профилографов могут это сделать, в частности, Oprofile и RotateRight/Zoom.
Этот ответ в основном говорит о * profilers *, который дает вам подробную информацию о том, где ваша программа проводит свое время. Профилирование - это только один случай использования * для настройки вашей программы. – Karmastan
@ Karmastan: Спасибо. Обычно проблемы с производительностью и памятью являются основными проблемами. В ответе говорилось, что это связано с тем, что проблема является проблемой. Я вижу, где можно ответить на другие вопросы, связанные с правильностью. –