2011-03-15 56 views
13

我發現了一些2008年的基準測試結果,用於測試幾個頂級.NET DI/IoC容器here的性能。但我一直無法找到任何更新的結果。有比較一些大的IoC容器(StructureMap,Unity,Ninject,Autofac,Castle Windsor等)的基準嗎?DI/IoC容器性能基準比較?

+0

我同意裏德。此外,基準很容易出錯。在此線程查找實例:http://stackoverflow.com/questions/5298240/hiro-vs-other-ioc-containers/5308894#5308894。 – Steven 2011-03-15 20:33:03

+1

事實上,這樣的新基準從網絡中遺漏,我認爲這是一個較小的擔心。 – 2011-03-15 20:44:12

回答

44

我不會推薦使用性能基準測試來挑選IoC容器。還有很多很多更重要的因素,例如功能設置,開發路線圖和可維護性等。

意識到您引用的基準在最壞的情況下僅顯示3-4倍的速度差100萬個電話。在「現實世界」場景中,DI/IoC用於連接依賴關係,並且對整體應用程序性能的影響非常小,因爲此構建階段佔整個運行時間的一小部分。選擇「高性能」還是「低性能」IoC容器可能對應用程序的感知性能沒有明顯的影響。

在性能對您的特定使用情況非常重要的情況下,基準不太可能成爲衡量IoC容器性能如何影響您的有效衡量標準,因爲基準往往會偏向特定的問題集。如果您真的相信這是一個嚴重的問題,我強烈建議您自己進行分析和測量。

+6

只是想說,選擇高性能與低性能IoC容器可以對應用程序的感知性能產生巨大的明顯影響,因爲用戶最小的可識別更改爲50ms,並且最佳與最差容器之間的性能差異通常是超過50毫秒。出於這個原因,我們親自從Ninject移到了DryIoC 2.1.3。 – 2016-02-23 16:02:37

+0

3-4倍的差異不是更新的基準測試結果。例如,根據http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison – daniloquio 2018-03-07 19:04:03

6

在我的情況下,IoC容器的速度一直是一個重要因素。我有一個執行許多注射的應用程序,發現Ninject大大減慢了應用程序的速度。完全取出IoC解決了性能問題。我將研究其他解決方案。

+0

,Ninject vs LightInject的差異可能會超過200倍。如果將IoC容器解決性能問題,你可能想嘗試[Simple Injector](https://simpleinjector.codeplex.com/)。 Simple Injector與手工創建對象圖相比的性能開銷是最小的(有時甚至更好),這可以在[this benchmark]中看到(http://www.palmmedia.de/blog/2011/8/30/ IOC-容器基準-性能比較)。 – Steven 2013-09-03 10:47:37

+0

調查DryIoC 2.1.3 – 2016-02-23 16:03:12