我试图理解为什么当我使用单线程应用程序时 使用以下代码
public void Run(object state)
{
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand("UpdatePriceInterval", connection))
{
command.CommandType = System.Data.CommandType.StoredProcedure;
for (int i = 0; i < 8000; i++)
{
command.ExecuteNonQuery();
}
}
}
}
对于以下代码我得到的结果大约是每秒230次
现在,如果我尝试使用任务(当然在循环内部更改为80次迭代
)for (int i = 0; i < 100; i++)
{
list.Add(Task.Factory.StartNew(Run, cancel, TaskCreationOptions.LongRunning));
}
我的总结果大约慢了3秒。(我在localhsot i7上运行)
我不认为sp是问题(因为我从中删除了所有逻辑)
在SQL profiler上,我确保连接已合并。
我的任务管理器显示一切正常(cpu内存磁盘网络)没有什么是100%
我错过了什么?
答案 0 :(得分:0)
您的“任务”版本正在尝试同时打开多个连接。
因此,它可能会在连接池中创建比单线程版本更多的连接,而单线程版本只需要在连接池中创建单个连接。