Вопрос

Сколько это будет стоить для моих программ производительности, если я добавлю к этому методы расширения?
Будет работать медленнее или может быть загружен медленнее?
Спасибо.

Это было полезно?

Решение

Сколько это будет стоить для моих программ производительности, если я добавлю к этому методы расширения? Будет работать медленнее или может быть загружен медленнее?

Там не будет удара по производительности. Методы расширения - это действительно статические методы.

Другие советы

Метод расширения является просто синтаксическим сахаром, применяемым к статическому методу.

Теоретически, статический метод быстрее, чем метод не виртуального экземпляра (не нужно проверять нулевой this), который, в свою очередь, быстрее, чем метод виртуального экземпляра (нет необходимости искать реализацию для вызова).

Теоретически, оптимизации могут избавиться от этих различий. Это также переоценивается с точки зрения статического, когда речь идет о методах расширения, поскольку объект, вероятно, будет рассматриваться таким образом, как требуется нулевая проверка (независимо от того, явное или неявное для того, как он используется) в любом случае.

На практике есть вероятность, что какой бы метод расширения окажет гораздо большее влияние, будь то расширение или экземпляр.

Я быстро производительность проверил это, используя некоторые целочисленные методы расширения в действительно длительной петле и обнаружили, что в тех случаях, когда я проверял, производительность обычно была идентична. При отладке или запуске неоптимизированных сборок методы расширения работали примерно в два раза медленно, так как мои контрольные случаи имеют смысл, потому что отладчик не может встроить эти методы и должен отслеживать отслеживание CallStack и т. Д.

Итак, в сборке, готовой к выпуску, без штрафа за производительность.

Это, безусловно, не будет загружаться медленнее, так как загрузка программы не зависит от путей выполнения в программе.

Что касается бега медленнее? Только измерение времени, взятого для метода расширения, и метода неэклейки, наверняка будет показано. Я подозреваю, что разница не будет значительной, даже если она действительно измерима.

Важным рассмотрением всегда должно быть «Метод расширения делает мой код более четкой и легче понимать и поддерживать».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top