我正在查看几个 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 性能比较中取得了优异的成绩,我很困惑为什么在这种情况下使用 O(log n) 二进制搜索算法优于使用 O(1) 字典?
有人可以在这里教育我吗?