http://www.codinginstinct.com/2008/04/ioc-container-benchmark-unity-windsor.html для некоторых испытаний производительности. Каждый тест выполнял 1000000 созданий.
Обратите внимание, что эталонный тест показывает одноэлементное разрешение и переходное разрешение: здесь есть единичный экземпляр, где вы регистрируете экземпляр класса, например (используя Unity):
container.RegisterInstance<IMyType>(new ConcreteMyType());
и этот экземпляр возвращается каждый раз (что довольно быстро).
Переходный процесс - это когда вы регистрируете только тип класса, а инфраструктура IoC сделает его за вас, например. (в Unity)
container.RegisterType<IMyType, ConcreteMyType>();
Это займет больше времени, чем возвращение синглтона.
С точки зрения общей оптимизации накладные расходы на внедрение зависимости - мелкое пиво; другие узкие места, связанные с производительностью, с большей вероятностью могут быть оптимизированы.