ОК, время понижения ...
Профилировщики отлично подходят для измерения.
Но ваш вопрос был «Как я могу определить, где медленные части моего кода?».
Это другая проблема. Это диагноз, а не измерение.
Я знаю, что это не популярный взгляд, но это правда.
Это похоже на бизнес, который пытается сократить расходы.
Один из подходов (сверху вниз) состоит в том, чтобы измерить общие финансы, затем разбить их по категориям и департаментам и попытаться угадать, что можно устранить. Это измерение.
Другой подход (снизу вверх) состоит в том, чтобы случайно зайти в офис, выбрать кого-то наугад и спросить их, что они делают в этот момент и (что важно) почему, подробно.
Делайте это более одного раза.
Именно так Гарри Трумэн сделал во время Второй мировой войны в оборонной промышленности США и сразу же обнаружил массовые мошенничества и растраты, посетив несколько объектов. Это диагноз.
В коде вы можете сделать это очень простым способом: «приостановить» его и спросить, почему он тратит именно этот цикл. Обычно стек вызовов подробно объясняет почему.
Делайте это более одного раза.
Это выборка. Некоторые профилировщики делают выборку из стека вызовов. Но затем по какой-то причине они настаивают на суммировании времени, потраченного на каждую функцию, включающую и исключающую. Это похоже на подведение итогов по бизнесу, включающее и исключающее.
Он теряет нужную вам информацию, которая является мелкозернистой деталью, указывающей, необходимы ли циклы.
Чтобы ответить на ваш вопрос:
Просто приостановите вашу программу несколько раз и перехватывайте стек вызовов каждый раз. Если ваш код работает очень медленно, расточительные вызовы функций будут происходить почти в каждом стеке. Они точно укажут на «медленные части вашего кода».
ДОБАВЛЕНО: RedGate ANTS становится там. Это может дать вам стоимость за линию, и это довольно элегантно. Так что, если вы находитесь в .NET и можете сэкономить 3 цифры, и вы не против подождать, чтобы установить и изучить его, он может рассказать вам многое из того, что может сказать вам ваша клавиша Pause, и проявить гораздо большую симпатию.