我目前有以下内容:
ConcurrentDictionary<ulong, MyEventHandler> eventHandlers;
以及不定数量的类:
class MyClass1
{
public const ulong MyKey = 0;
...
}
class MyClass2
{
public const ulong MyKey = 1;
...
}
...等等...
我的字典是保存与类的类型相对应的事件处理程序。现在我使用 MyKey
成员作为我的字典的键,效果很好。
但是,当现在和将来开发其他类时,我不想让开发人员担心必须拥有 key 。
执行以下操作要慢多少(如果有的话):
ConcurrentDictionary<Type, MyEventHandler> eventHandlers;
然后使用 typeof
运算符获取要索引到我的字典中的类型?
这样我就不用担心 key 了。
我确实非常关心速度,因为即使字典可能不会超过 100 个条目,也会调用 typeof
并且每秒会访问字典数千次。
最佳答案
类型由元数据标记表示和标识,我猜它是 32 位整数。 typeof 运算符在元数据表中进行查找,以查找元数据标记表示的类型。
我相信 JIT 编译器会很好地优化元数据表访问,因此我认为您实际上不应该注意到任何性能差异。如果使用 Type 作为键甚至会稍微快一点,我实际上不会感到惊讶。
由于使用 Type 作为键将使代码更容易维护,因此我建议使用该方法,除非您可以证明其他方法显然性能更高。
关于c# - 在 C# 中,键为 Type 类型的字典是否比键为 ulong 类型的字典慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700491/