Performing ForEach

本文关键字:ForEach Performing | 更新日期: 2023-09-27 18:10:51

我需要提高ForEach的性能。

//Pseudocode
foreach (item i item in items)
{
//Call service to open DB conn and get data
}

在此循环中调用一个服务,该服务打开会话sqlserver,从数据库获取数据并关闭会话,因此对于每个迭代。我能做什么?谢谢。

Performing ForEach

好吧,这听起来像一个完美的使用Parallel.ForEach -那么你试过吗?

Parallel.ForEach(queries, query => {
    // Perform query
});

您可能想要指定并行度等级别的选项,并确保您的连接池支持尽可能多的连接。当然,测量前后的性能,以确保它确实有帮助。

也许你可以在每次迭代中启动一个新线程:

foreach (item i in collection)
{
    Thread t = new Thread(functionToCall);
    t.Start()
}
functionToCall()
{
    database = openSQLSession();
    data databaseData = database.getData();
    dataCollection.Add(databaseData);
    closeSQLSession();
}

当然这是一个简单的例子和漂亮的伪代码,但我希望你能得到它的要点?