Каковы эффекты запуска, скажем, профилировщика Visual Studio 2010, на производительность моей программы? То есть, каким образом результаты от профилировщика фактически неточны из-за того, как профилировщик должен «вмешиваться» в нормальную работу программы для проверки производительности? Или есть такие проблемы?Влияние самого профилировщика на измерение производительности в .Net
Этот вопрос связан с тем фактом, что я вижу, что свойство получает/устанавливает свойство как занимающее значительное количество времени в моих методах в профилировщике Visual Studio 2010 (я программирую на C#). Эти свойства являются теми, которые автоматически генерируются в словаре ресурсов .resx (избегая магических строк :-)), и поэтому я хотел бы принять, что компилятор JIT и/или интерпретатор, работающий за кулисами , как правило, ввел их если бы это было полезно. Я бы предположил, что такая инкрустация не возникает, когда вы запускаете профилировщик ... Или это так?
Я специально работаю с профилировщиком Visual Studio 2010, но я был бы признателен за ответ, который включает в себя другие профилировщики.
Извините, если я упустил вопрос, который отвечает на это уже, не стесняйтесь указывать путь.
Свойства действительно дороги и занимают около 80 раз больше времени, чем открытые поля. Также кажется, что они не оптимизированы (даже не nGen). В областях, где наследование и совместимость не играют никакой роли, я часто использую публичные поля вместо свойств для повышения производительности (если команда позволяет это, некоторые разработчики получают религиозную информацию об этом «грехе»). У меня есть подозрение, что свойства действительно оптимизируются в виртуальных машинах с технологией Hyper-V. Как-то на виртуальной машине ситуация значительно улучшается по сравнению с сухой OS-установкой на одном и том же оборудовании. –
Я думаю, это зависит от свойства: http://www.dotnetperls.com/property. Некоторые из них, по-видимому, оптимизированы. Но похоже, что в качестве вывода к тому, что сказал @Cydermaxs, эта аппаратура может очень хорошо предотвратить оптимизацию свойств, просто путем измерения их скорости.То же самое может произойти для выборки, но на данный момент это неуверенно. – skybluecodeflier
IMHO (и, увидев ответ ниже), использование таймера для сравнения оптимизированного кода с оптимизированным кодом будет работать для определения того, будут ли свойства или поля быстрее в вашем конкретном экземпляре. – skybluecodeflier