Недавно меня попросили устранить некоторые проблемы с производительностью в приложении, созданном с помощью блока приложения Microsoft Composite UI, особенно из-за того, что загрузка загружалась слишком долго.
Это построено на основе инфраструктуры внедрения зависимостей Microsoft ObjectBuilder, которая использует отражение / атрибуты для регистрации классов. Профилирование показало, что при запуске приложение тратит значительную часть времени на рефлексию, так как ObjectBuilder сканирует каждый тип в каждой загруженной сборке в поисках объектов для регистрации.
Кажется, что все альтернативные структуры DI также используют атрибуты, конфигурацию XML или чистый код.
Не похоже, чтобы какая-либо из других основанных на атрибутах инфраструктур была бы лучше, и я скептически отношусь к временам запуска, когда необходимо анализировать груды XML, и т. Д.
Кажется, что основанные на чистом коде фреймворки должны быть намного быстрее, но в то же время они гораздо менее гибки, так что на самом деле не кажется, что есть хороший выбор ...
Это привело меня к поиску эталонных тестов DI-контейнера, но я смог найти только один: http://www.codinginstinct.com/2008/04/ioc-container-benchmark-unity-windsor.html.
Хотя это отличный тест, он измеряет только то, насколько быстро вы можете создать 1 миллион объектов с помощью контейнера. Я не заинтересован в создании 1 миллиона объектов, я просто хочу, чтобы приложение запускалось как можно быстрее, поэтому мне нужна любая информация о стоимости DI Container startup , будь то сообщения в блоге, анекдоты, или даже что-то простое, как «вот способ сделать ObjectBuilder быстрее».
Заранее спасибо