Если что-то делает программу с одним потоком, скажем, в 10 раз дольше, вы можете запустить профайлер. Вы также можете просто остановить его с помощью кнопки "пауза", и вы точно увидите, что он делает.
Даже если он на 10% медленнее, чем он должен быть, если вы остановите его больше раз, в скором времени вы увидите, что он многократно делает ненужную вещь. Обычно проблема заключается в вызове функции где-то в середине стека, который действительно не нужен. Это не мешает проблеме, но она действительно находит ее.
Изменить: возражения в основном предполагают, что вы принимаете только один образец. Если вы серьезно, возьмите 10. Любая строка кода, вызывающая некоторый процент потерь, например 40%, будет отображаться в стеке на этой фракции выборок в среднем. Узкие места (в однопоточном коде) не могут скрыть от него.
EDIT: Чтобы показать, что я имею в виду, многие возражения имеют форму "недостаточно образцов, поэтому то, что вы видите, может быть полностью ложным" - смутные представления о шансе. Но если что-то из узнаваемого описания, а не только в рутине или рутинной активности, действует в течение 30% времени, то вероятность увидеть его на любом данном образце составляет 30%.
Тогда предположим, что взято всего 10 выборок. Количество раз, когда проблема будет видна в 10 образцах, следует биномиальное распределение, а вероятность увидеть ее 0 раз - 0,028. Вероятность увидеть его 1 раз .121. В 2 раза вероятность равна 0,233, а в 3 раза - 0,267, после чего она падает. Поскольку вероятность увидеть его менее двух раз составляет 0,28 + 0,121 = 0,13, это означает, что вероятность увидеть его два или более раз составляет 1 -.139 =.861. Общее правило заключается в том, что если вы видите что-то, что вы можете исправить на двух или более образцах, это стоит исправить.
В этом случае вероятность увидеть его в 10 образцах составляет 86%. Если вы в 14%, которые этого не видят, просто делайте больше образцов, пока не сделаете это. (Если количество образцов увеличено до 20, вероятность увидеть его два или более раз увеличивается до более чем 99%.) Таким образом, он не был точно измерен, но он был точно найден, и важно понять, что это может легко быть тем, что не удалось найти профайлеру, например, что-то, связанное с состоянием данных, а не с программным счетчиком.