Как рассчитать использование ЦП фрагмента кода .NET?

Наш инструмент генерирует журналы производительности в диагностическом режиме, однако мы отслеживаем производительность по времени выполнения кода ( Секундомер + миллисекунды ).

Очевидно, что это совсем ненадежно, ЦП тестовой системы может использоваться каким-то случайным процессом, результаты будут совершенно другими, если вы настроите инструмент для запуска 10 потоков, а не 2 и т. Д.

Мой вопрос:

Что? s правильный способ узнать правильное время процессора для фрагмента кода ( не для всего процесса )?

Что я имею в виду под CPU Time:

В основном, сколько тактов затратил CPU. Я предполагаю, что это всегда будет одинаково для одного и того же фрагмента кода на одном компьютере и не будет зависеть от других процессов. Здесь могут быть некоторые фундаментальные вещи, которых мне здесь не хватает, в таком случае, пожалуйста, просветите меня в комментариях или ответах.

PS Использование профилировщика невозможно в нашей настройке

Другое обновление,

Почему Я не собираюсь использовать профилировщик

, потому что нам нужно тестировать код в разных средах с разными данными, где у нас нет профилировщика, IDE или чего-то подобного. Следовательно, сам код должен с этим справиться. Крайним вариантом может быть использование DLL профилировщика, но я не Не думаю, что эта задача требует такого сложного решения ( при условии, что не существует бесплатной и простой в реализации библиотеки профилирования ).

6
задан dr. evil 18 January 2011 в 16:22
поделиться