我正在创建一个库,对其进行性能测试。我生成了一个
它经常用于查找项,但查找是该库中较大的瓶颈之一。
是的,我在微观优化,但为了学习。我想知道是否有更好的方法来提高查找性能?
更新:
我使用 dotTrace 测量性能。报告和 dotTrace 在我的家用电脑上,所以我没有报告(否则可以上传到其他地方)。
我使用了这里找到的测试: https://github.com/danielpalme/IocPerformance 字典定义在这里: https://github.com/jgauffin/Griffin.Container/blob/master/Source/Griffin.Container/ContainerBase.cs 我在上周五创建了容器,不要期望太高。
更新2
Dictionary<Type, X>
。当前条目是以随机顺序插入的,这个字典在应用程序生命周期内保持不变。它经常用于查找项,但查找是该库中较大的瓶颈之一。
是的,我在微观优化,但为了学习。我想知道是否有更好的方法来提高查找性能?
更新:
我使用 dotTrace 测量性能。报告和 dotTrace 在我的家用电脑上,所以我没有报告(否则可以上传到其他地方)。
我使用了这里找到的测试: https://github.com/danielpalme/IocPerformance 字典定义在这里: https://github.com/jgauffin/Griffin.Container/blob/master/Source/Griffin.Container/ContainerBase.cs 我在上周五创建了容器,不要期望太高。
更新2
Dictionary.TryGetValue
在Resolve
的总时间(251毫秒)中占用了101毫秒,如果我正确解释了这些数字,那么它占据了40.2%的时间。
int
等)还是因为反射而使用Type
对象?如果调用者在静态上下文中知道类型,那么有一些技巧可以使用。 - Marc GravellSomeCache<int>.Whatever(...)
,带有静态初始化程序(.cctor
)来准备每个T
的元数据。 - Marc Gravell