【发布时间】:2016-05-16 13:04:54
【问题描述】:
什么是更明智的考虑?散列RuntimeTypeHandle 还是散列Type?请尝试解释原因。
【问题讨论】:
-
您是否尝试过两种方法并进行比较?是什么让您认为仍然会对性能产生重大影响?这是特定应用程序的瓶颈还是您只是好奇?
-
只是好奇,我不久前上过 C# 课程,他告诉我们 RuntimeTypeHandle 对散列的性能更明智。我真的不知道如何检查它们,因为我需要很多类型,如果我要散列 10 种类型,它不会做太多工作。
-
好吧,你可以在每个方向上搜索一百万次键,看看是否有区别。字典访问是
O(1),因此字典的大小对性能没有太大影响(如果有的话)。散列算法的速度和分布决定了一切。 -
好吧,我照你说的做了,显然它更快地散列 Type 而不是 RuntimeTypeHandle。所以我做了另一个基准测试,因为
GetType和typeof每次都返回相同的Type对象,我试图通过GetType().GetHashCode()与GetType()来查找价值。散列哈希码(int32)似乎比使用类型本身要快得多。