我需要提高ForEach的性能。
//Pseudocode
foreach (item i item in items)
{
//Call service to open DB conn and get data
}
在此循环中,调用打开会话sqlserver的服务,从数据库获取数据并关闭会话,因此对于每次迭代。 我可以做什么?。 感谢。
答案 0 :(得分:2)
这听起来好像是Parallel.ForEach
的完美使用 - 所以你试过吗?
Parallel.ForEach(queries, query => {
// Perform query
});
您可能希望指定并行级别等选项 - 并确保您的连接池支持任意数量的连接。当然,衡量之前和之后的表现,以确保它实际上有所帮助。
答案 1 :(得分:1)
也许你可以在每次迭代中开始一个新线程:
foreach (item i in collection)
{
Thread t = new Thread(functionToCall);
t.Start()
}
functionToCall()
{
database = openSQLSession();
data databaseData = database.getData();
dataCollection.Add(databaseData);
closeSQLSession();
}
当然这是一个简单的例子,非常伪代码,但我希望你能得到它的主旨吗?