【发布时间】:2011-01-25 09:03:07
【问题描述】:
我有一本包含大约 100 万个项目的字典。我不断循环扔字典:
public void DoAllJobs()
{
foreach (KeyValuePair<uint, BusinessObject> p in _dictionnary)
{
if(p.Value.MustDoJob)
p.Value.DoJob();
}
}
执行有点长,大约 600 毫秒,我想减少它。这是禁忌:
- MustDoJob 值在两次调用 DoAllJobs() 之间大多保持不变
- MustDoJob 值的 60-70% == false
- MustDoJob 不时更改为 200 000 对。
- 某些 p.Value.DoJob() 不能同时计算(COM 对象调用)
- 在这里,我不需要 _dictionnary 对象的关键部分,但我在其他地方确实需要它
我想做以下事情:
- 并行化,但由于 4,我不确定是否会有效。
- 从 1. 和 2. 开始对字典进行排序(停止希望我找到第一个 MustDoJob == false),但我想知道 3. 会导致什么
我没有实施之前的任何想法,因为这可能是一项繁重的工作,我想在此之前研究其他选项。那么……有什么想法吗?
【问题讨论】:
标签: c# performance dictionary