Я только что скачал пробную версию ANTS Performance Profiler из Red Gate и изучаю код моей команды.Сразу же я замечаю, что есть определенная часть кода, о которой ANTS сообщает, что она потребляет до 99% процессорного времени.
Я совершенно незнаком с ANTS или профилированием производительности в целом (то есть, за исключением самопрофилирования с использованиемя уверен, что это очень грубые и недовольные методы, такие как double timeToComplete = (endTime - startTime).TotalSeconds
), так что я все еще возлюсь с приложением и выясняю, как оно используется.Но я позвонил разработчику, ответственному за рассматриваемый код, и его немедленной реакцией было: «Да, меня не удивляет, что он так говорит; но этот код вызывает SignalAndWait [который я смог увидеть сам, благодаря ANTS], чтоне использует никакого процессора, он просто сидит и ждет, когда что-то сделает ".Он посоветовал мне просто игнорировать этот код и искать что-нибудь еще, что я смог найти.
Мой вопрос: правда ли, что SignalAndWait не требует НИКАКИХ затрат ЦП (и если да, то как это возможно?), И действительно ли это возможно?Разумно ли, что профилировщик производительности посчитает, что он занимает 99% процессорного времени?Я нахожу это особенно любопытным, потому что, если он равен 99%, это может означать, что наше приложение часто бездействует, не так ли?И все же его производительность в последнее время стала довольно вялой.
Как я уже сказал, я действительно новичок, когда дело доходит до этого инструмента, и я ничего не знаю о классе WaitHandle.Так что любая информация, которая поможет мне понять, что здесь происходит, будет оценена.