Документы recommend для регистрации часто используемых компонентов через лямбду как ...Почему лямбды разрешаются быстрее?
Это может дать улучшение до 10 раз быстрее
Resolve()
звонков
Теперь, очевидно, есть несколько вопросов:
- Почему? (EDIT: уточнить: я бы понял, если зарегистрировать время, потому что вам нужно использовать отражение сейчас, чтобы найти правильный конструктор и т. Д., Но почему стоит время разрешения?)
- В каких сценариях это делается применить/какие аспекты зарегистрированного класса сделать этот номер вверх /, который заставляет его идти вниз?
- В какое время решения мы вообще говорим о любом случае? Как «да, теперь требуется 100 вместо 10 циклов процессора» или фактически измеримых чисел в «обычных» случаях использования (веб-сервис с продолжительностью жизни каждого запроса)?
Конкретные реализации всегда быстрее, чем дженерики или отражение. При общем использовании в фоновом режиме используется много отражений. И это медленнее. В большинстве случаев вы не можете почувствовать разницу. Вы можете просто испортить это.Использование с использованием тяжелых кодов, таких как алгоритмы, часто следует избегать отражения или дженериков из-за замедления. Но: «преждевременная оптимизация - это корень всего зла». Сделай так, чтоб это работало. Затем заставьте его работать быстро, если необходимо. – Ben
@Ben да, я знаю об этом, но я бы предположил, что эта стоимость приходится на время регистрации, а не на время решения (потому что как только я нашел правильный конструктор, который может быть выполнен во время регистрации, я могу просто вызвать '' 'Activator .CreateInstance'''). Вот что меня смущает. – FrankyBoy