IoC container benchmark – performance comparison

IoC container benchmark – performance comparison

January 4, 2019 1 By Nam Vu

IoC container benchmark – performance comparison

Chỉ mục comparison:

Một vài benchmark (Đo và thống kê các thông số kỹ thuật) của một số containers trong các kịch bản khác nhau. Mỗi container đều có những ưu nhược điểm và cách triển khai riêng. Để nằm bắt được các giới hạn của chúng nên dưới đây là những thông số thống kê được với 500.000 lần benchmarks được tính bằng miliseconds. Ngoài ra còn có những thống kê với single threaded (đơn luồng) và multi threaded (đa luồng)

Các chỉ mục benchmarks:

  • Singleton: Objects with is singleton lifetime are resolved
  • Transient: Objects with is transient lifetime are resolved
  • Combined: Objects with two dependencies (singleton and transient lifetime) are resolved
  • Complex: Objects with several nested dependencies are resolved
  • Property: Objects which require property injection are resolved
  • Generics: Objects with a generic dependency are resolved
  • IEnumerable: Several objects that implement the same interface are resolved
  • Conditional: Objects with a conditional dependency are resolved
  • Child Container: Objects are resolved trough a child container
  • Interception With Proxy: Objects with a dynamically generated wrapper are resolved
  • Prepare And Register: Initializes container and registers some basic elements (executed 3.000 times)
  • Prepare And Register And Simple Resolve: Initializes container and registers some basic elements. The resolves two objects (executed 3.000 times)

Tổng quát:

Bảng so sánh tính năng cụ thể:

Tóm lại:

Ninject khởi tạo và định nghĩa container là chậm nhất.

MEF, LinFu và Spring.Net nhanh hơn Ninject, nhưng vẫn khá chậm.

AutoFac, Catel và Windsor ổn hơn so với StructureMap, Unity và LightCore.

Nhược điểm của Spring.Net là chỉ cấu hình được với XML

DryIoc, LightInject và Simple Injector có performance rất tốt và hỗ trợ một số tính năng nâng cao như interception và generic decorators. Ngoài ra chúng còn cung cấp tài liệu chi tiết và đầy đủ cùng với hỗ trợ tất cả các nền tảng.

Source code

Latest source code is available on Github.

Downloads

IocPerformance.7z
Results.zip

— Nguồn: palmmedia.de —