Определение источника высокой загрузки процессора
Я добавил библиотеку ICQ# (с открытым исходным кодом) в свое приложение. Но если я подключусь к серверу ICQ через него, это увеличит загрузку процессора (до 30%). Так что что-то в библиотеке ICQ# так сильно использует процессор. Но я не знаю, как определить, что это такое, и уменьшить использование процессора.
3 ответа
Если это открытый исходный код, и вы добавили код в свой проект; запустите его с приложенным профилировщиком.
Я нахожу его в файле 'icq_sharp\IcqSharp.Util\Timer.cs'. Смотрите функцию: private void DoWorker()
, Есть петля без задержки. Просто добавь Thread.Sleep(10);
Самый простой подход заключается в следующем:
- Запустите вашу программу в отладчике.
- И ворваться в отладчик в какой-то момент.
- Посмотрите на стек вызовов, где бы вы ни находились
- повторите шаги 2-3
Выполнение этого всего два или три раза дает вам очень хорошее представление о том, на что тратится большая часть вашего времени выполнения. Если большая часть времени выполнения тратится на одну функцию, то эта функция будет находиться в стеке вызовов почти каждый раз, когда вы входите в отладчик.