我有一本包含大约 100 万个条目的字典。我不断地循环字典:
public void DoAllJobs()
{
foreach (KeyValuePair<uint, BusinessObject> p in _dictionnary)
{
if(p.Value.MustDoJob)
p.Value.DoJob();
}
}
执行时间有点长,大约 600 毫秒,我想减少它。这是限制:
- MustDoJob 值在两次调用 Do AllJobs() 之间大多保持不变
- 60-70% 的 MustDoJob 值 == false
- MustDoJob 有时会更改为 200 000 对。
- 某些 p.Value.DoJob() 无法同时计算(COM 对象调用)
- 在这里,我不需要字典对象的关键部分,但我确实在其他地方需要它
我想做以下事情:
- 并行化,但由于 4,我不确定是否有效。
- 从 1. 和 2. 开始对字典进行排序(并且停止想要我找到第一个 MustDoJob == false),但我想知道 3. 会导致什么
我没有实施任何以前的想法,因为这可能是很多工作,我想之前调查其他选择。那么...有什么想法吗?
我建议您的业务对象可以引发一个事件来表明它需要在以下情况下完成一项工作:MustDoJob
变为 true,您可以订阅该事件并将对这些对象的引用存储在一个简单的列表中,然后在DoAllJobs()
方法被称为
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)