我相对较新加入了公司,并与另外一个人一起处理已经存在一段时间的代码。此代码利用Microsoft.VisualBasic.Collection对象来存储所有产品(表示ETF或股票对及其相关数据的对象)并从中进行大量搜索/检索。
据我所知,Collection类已被弃用,几乎没有人再使用它了。在我们更近期的代码中,我们使用.NET集合,例如List(Of T)和Dictionary(Of TKey, TValue),我认为用Dictionary替换旧的Collection可能是有道理的。然而,由于源代码相当庞大,继续进行此替换将是一项重大任务;因此,我的问题只是这样的:
是否有人实际测量过旧的Collection和.NET Dictionary之间的性能差异?出于任何原因,这样的比较是否不适当?显然,我们目前使用Collection做的一切都可以用Dictionary来完成;基本上我只想知道,对我们来说是否有意义去查看代码并进行这个转换,或者这样做实际上是浪费时间。
编辑:最初在问题中,我将我们当前使用的Collection称为VB6 Collection。在阅读前两个回答后,我意识到它更准确地是Microsoft.VisualBasic.Collection,这似乎是一种用于VB6和VB.NET之间兼容性的类。我认为问题仍然存在。
根据Kenneth Cochran答案中提供的第一个链接,我得出结论,对于我们的目的来说,Dictionary确实比Collection更适合,因为它在按键检索项目和运行“ForEach”循环时的性能比Collection快几毫秒,对于10,000次运行而言。在我们公司,这是一个现实的情况;代码中有很多像以下语句的地方:
Dim ETF as ETFdetails = ETFcoll(sym)
正如我所说的,这些代码会在数百个产品上执行,每秒钟执行多次。考虑到这一点,我倾向于认为我们应该继续进行更改,然后测量任何性能差异。我预计我们至少会看到一个轻微但明显的改进。
我刚才说的有什么明显的问题吗?如果有,请指出!