такой же ответ как:
Отредактировано: Вы спросили, какие у вас были варианты. Если ваше сердце настроено на профилирование, тогда ищите профилировщик.
С другой стороны, если у вас действительно есть проблема с производительностью, простой метод работает так же хорошо или лучше, чем почти каждый профилировщик. Я говорю почти каждый, потому что в некоторых профилировщиках вы можете фактически узнать, что вам нужно знать, что является затратой времени, относящейся к отдельным инструкциям, особенно к инструкциям по вызову.
Затраты времени на инструкцию - это количество времени, которое будет сэкономлено, если команда может быть удалена, и хорошей оценкой будет доля выборок стека вызовов, содержащих ее. Вам не нужно оценивать эту долю с высокой точностью. Если инструкция на 5 из 10 образцов, ее стоимость, вероятно, находится в диапазоне от 45% до 55%. Неважно - если бы вы могли от него избавиться, вы бы сэкономили его стоимость.
Так что найти проблемы с производительностью несложно. Просто возьмите несколько выборок стека вызовов, соберите набор инструкций для этих выборок и оцените инструкции по доле содержащих их выборок. Среди высокоуровневых инструкций есть те, которые вы могли бы оптимизировать, и вам не нужно угадывать, где они находятся.
Я несколько упрощаю, потому что часто полезно изучить больше информации о состоянии, чем просто стек вызовов, чтобы увидеть, действительно ли какая-то выполняемая работа действительно необходима. Но я надеюсь, что дело сделано.
Люди выражают сомнение в том, что он может работать при наличии рекурсии или работать над большими программами. Небольшая мысль (и эксперименты) показывает, что эти возражения не выдерживают критики.