仕事で使用するものを選択するために、いくつかの IoC コンテンツを調べています。LightInject のコードベースを調べていると、理解できないものに出会いました...
ServiceContainer のGetInstance(Type serviceType, string serviceName)
メソッドでは、パラメーターからキーを形成し、「namedDelegates」で「Search」を呼び出します。
var key = Tuple.Create(serviceType, serviceName);
var instanceDelegate = namedDelegates.Search(key);
namedDelegates は、ImmutableHashTree<TKey, TValue>
(独自のコメントから) を実装する内部クラスです。
/// A balanced binary search tree implemented as an AVL tree.
私が LightInject を見ている理由は、Daniel Palme の IoC Performance Comparisonでの優れたスコアのためであり、この場合、O(1) 辞書を使用するよりも O(log n) バイナリ検索アルゴリズムが望ましい理由について困惑しています。 ?
ここで教えてくれる人はいますか?