Сравнение производительности контейнера DI/IoC?
Я нашел некоторые контрольные результаты 2008 для тестирования производительности нескольких из лучших контейнеров .NET DI/IoC здесь. Но я не смог найти никаких обновленных результатов. Есть ли какие-либо критерии, которые сравнивают некоторые из больших контейнеров IoC (StructureMap, Unity, Ninject, Autofac, Castle Windsor и т. д.)?
3 ответов
Я бы не рекомендовал использовать критерии производительности для выбора контейнера IoC. Есть много, много более важных факторов, таких как набор функций, дорожная карта развития и ремонтопригодность и т. д.
поймите, что Эталон, который вы цитируете, в худшем случае показывает только 3-4x разницу в скорости более 1 миллиона вызовов. В сценарии "реального мира" DI/IoC используется для подключения зависимостей и будет иметь очень минимальное влияние на общую производительность приложения, так как это этап строительства-это невероятно небольшая часть вашей общей среды выполнения. Выбор контейнера IoC" высокая производительность "и" низкая производительность", скорее всего, не окажет заметного влияния на воспринимаемую производительность вашего приложения.
в маловероятном сценарии, что производительность действительно важна для вашего конкретного случая использования, бенчмарк вряд ли будет действительным показателем того, как производительность контейнера IoC повлияет на вас, поскольку бенчмарки, как правило, отклоняются в сторону конкретной проблемы набор. Я бы настоятельно рекомендовал сделать свой собственный профилирования и измерения, если вы действительно считаете, что это серьезная проблема.
в моем случае скорость контейнера МОК была важным фактором. У меня было приложение, которое выполняет много инъекций и обнаружило, что Ninject значительно замедляет применение. Снятие МОК полностью решило проблемы с производительностью. Я буду искать другие решения.
IOC Container Benchmark-сравнение производительности имеет таблицы сравнения производительности и функций для 20 + продуктов, и он обновлен (последнее обновление 21.12.2017)
вывод из статьи:
особенно Простой Инжектор Кажется, хороший выбор. Это очень быстро, имеет хорошую документацию, а также поддерживает расширенные сценарии, такие как перехват и общие декораторы.
Смотрите также родственные https://stackoverflow.com/questions/1140730/net-di-containers-comparison/ вопрос.