使用.Contains方法和缓存的哈希集

时间:2011-07-26 03:31:47

标签: .net vb.net hashset

我知道hashset上的.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 个答案:

答案 0 :(得分:2)

在速度方面,答案通常是双向写下,看看你是否能真正衡量有意义的差异。

为了清楚代码,我建议你选择解决方案2.如果所有内容都进入底池,它将会更易于理解,维护和调试。

答案 1 :(得分:1)

通常,如果你循环,你应该做一切可以在循环外循环之外完成的事情。

它可能不会导致显着的性能变化,因为今天的处理器非常快,并且编译器可能能够优化代码。不过在我看来它更干净。循环中的代码集中于它自己的目的,并且不必在每一步都执行“设置”代码。

另一个考虑因素是改变代码。如果你今天GetHashSetMethod只返回对单身人士的引用,你将不会遇到任何速度上的差异。但是,如果有人将HashSet n次加载,那么很快有人将其更改为(例如)从文件中加载哈希集数据就会出现问题。