小编dgo*_*rka的帖子

加快VB.Net 2008中字典的循环

我有一个进程导入每日产品注册文件,并将它们添加到我们的数据库中.最初,此过程将针对每个记录多次查询数据库,以确定如何处理数据.

为了加快此过程并防止尝试使用使用相同数据库的报告站点的人可能出现的任何超时问题,我已更改代码以将一些表拉入词典,然后迭代他们看看客户/地址/经销商是否存在,如果是,则从字典的键中提取Id,或者将其插入表中,如果不存在则插入字典.

但是,我目前发现这比我每次注册多次查询数据库要.我能想到的一个可能的原因是我的词典非常庞大(一个有800万条目,另一个有1100万条).

这是我正在做的一个例子:

    For Each kvp As KeyValuePair(Of Int64, String) In dCust
            If kvp.Value = firstName & "|" & lastName & "|" & companyName & "|" & addrId & "|" & typeID & "|" & phone & "|" & email Then
                custId = kvp.Key
                Exit For
            End If
    Next
Run Code Online (Sandbox Code Playgroud)

这本词典里面有大约1100万条记录.

我的一个同事的想法是Dictionary.ContainsValue()在循环之前运行,看它是否在那里.如果它不完全跳过循环.我只想尝试这个,如果它运行得比仅仅执行循环本身更快,如果他们花费相同的时间我没有看到基本上运行循环两次的一点.

所以我的问题是:

  • 我是否以最有效的方式解决这个问题?
  • Dictionary.ContainsValue()在尝试循环之前运行a会更快,还是系统会将它们解释为相同的东西,从而使我的时间加倍?
  • 还有什么我应该找的吗?

.net vb.net dictionary

2
推荐指数
1
解决办法
3402
查看次数

标签 统计

.net ×1

dictionary ×1

vb.net ×1