Есть ли разница в отношении исполнения частных, защищенных, общественных и внутренних методов в классах C #?
-
29-10-2019 - |
Вопрос
Есть ли разница в производительности методов private
, protected
, public
и internal
в классе C #?Меня интересует, потребляет ли один больше процессорного времени или оперативной памяти.
Решение
Я не осознает любую разницу производительности для нормального вызова; Возможно, что более ограниченный доступ займет немного больше работы при доступе с помощью динамического вызова или размышлений, поскольку абонент может потребоваться проверять более тщательно. В нормальном скомпилированном JIT-скомпилированном случае доступ может быть подтвержден CLR только один раз, а затем приняты как должное. Я полагаю, возможно, что сама с компиляцией JIT (и IL Verication) может быть немного медленнее для более ограничительного доступа - но мне трудно поверить, что это будет значительным.
Это должно быть абсолютно не быть фактором определения того, какие доступности использовать, даже если каким-то образом есть некоторая крошечная разница производительности, о которой я не знаю. Если вы считаете, что вы сможете достичь пособия по производительности, сделав доступность чего-то, кроме «натурального» одного для вашего дизайна, вы обязательно должны определенно оценить ранее / после случая случаев - я подозреваю, что вам будет трудно найти Ситуация на реальном мире, где разница надежно измерима.
Один и тот же совет идет для всех видов микрооптимизации: в любом случае, это почти никогда не является хорошей идеей, и должен определенно проводиться только в осторожном измерении.
Другие советы
Не будет ощутимой разницы в производительности между частными, защищенными или общедоступными методами.
Если вы сосредоточены на оптимизации, возможно, вам стоит попробовать сделать узкое место кода более «процедурным», чем объектно-ориентированным.Это принесет небольшое улучшение.