Ну например я смотрю спайдером.
Допустим я пишу сейчас АПИ для телеграмма. Есть у меня демка. И, например, у меня большая нагрузка на процессор(на самом деле мизерная - 0.1-0.3%). Что бы определить место, где происходит нагрузка - я запускаю демку под профайлером.
Открываю Code Tracking и смотрю в моем юните(TelegaPI.Bot) на количество вызовов. Ознакомившись с этой сводкой - становится ясно - что больше всего вызовов происходит во время получения обновлений. Обновления от сервера получаю getUpdates. SetIsReceiving -метод, который в другом потоке в цикле проверяет обновления. Так что, если меня не устраивает нагрузка на ЦП - нужно обратить внимание на этот метод(SetIsReceiving, а точнее getUpdates, в котором вся логика работы)