【发布时间】:2011-07-26 03:31:47
【问题描述】:
我知道哈希集上的 .Contains 方法很快。我的问题是在重复使用 .Contains 方法之前获取哈希集数据的最佳方法是什么?
我可以想到 2 个选项。这两个示例都将在长度未定的循环中调用。
1) 直接调用返回缓存hashset的方法,使用.Contains方法。
IF (GetHashSetMethod.Contains("TESTVALUE") THEN BLAH, BLAH, BLAH...
2) 在循环外创建一个新的hashset,并将缓存的hashset数据加载到其中,这样返回hashset的方法只调用一次,然后使用.Contains方法。
DIM HashTest AS HASHSET(OF String) = GetHashSetMethod
然后循环:
if (HashTest.Contains("TESTVALUE") THEN BLAH, BLAH, BLAH...
我一直在使用方法 1。我是否应该考虑切换到方法 2?有没有我什至没有想到的第三种选择?因为数据一开始就被缓存,所以这是否重要?
【问题讨论】:
-
您是否尝试过选项 2,看看它是否比选项 1 更快或更慢?
-
实际上,我已经对其进行了测试,并没有真正看到任何差异,但我没想到会看到任何重大的性能差异。我想知道我是否应该首先这样做。对于这种我不知道的事情是否有普遍接受的最佳实践,或者在这种情况下一致性是最重要的事情?
-
我认为您在第一个示例中的
GetHashSetMethod之后缺少一对()。