Проблемы с производительностью dottracer
Я только что установил dot tracer для мониторинга огромного приложения менеджера киосков самообслуживания, которое я написал, и сейчас работаю над проблемами производительности. Решение состоит из почти 40 различных проектов, которые загружаются (в зависимости от требований заказчика) основной сборкой, которая является исполняемым файлом WPF с использованием отражения во время выполнения.
Производительность вполне приемлема для машины с частотой 3 ГГц с 3 ГБ ОЗУ и графической картой (6–12% использования ЦП, 80 МБ ОЗУ и 20–40% использования ГП), но 3 дня назад я запустил ее на очень слабой машине (0,6 ГГц ЦП, 1 ГБ ОЗУ и без графической карты) одного из клиентов, и загрузка ЦП превысила 60%, поэтому мне пришло в голову найти узкое место! Во всяком случае, точка трассировщик показывает мне, что большую часть времени тратится на ожидание (в основном Thread.Sleep
разделы), потому что в моем приложении есть разные потоки, которые в некоторых циклах ожидают чего-то (например, входящего сообщения в сокете, нажатия клавиши на устройстве и т. д.).
Итак, это плохо, что мое приложение использует Thread.Sleep()
? У меня есть другие варианты?
Вот результат теста: