Mas*_*aei 3 c# sql performance foreach
我需要从C#中的应用程序更新数据库中的100条记录.我使用了foreach语句并调用了storde proc来更新每个记录,如下所示:
foreach (var record in recordList)
{
dbWatch.Start();
DbService.UpdateRecord(Id, ProcessDate, MessageID, task.Result.Email.TryTimes);
dbWatch.Stop();
LogMessage(string.Format("Single database row update toke:{0}",dbWatch.Elapsed));
}
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,除了当它开始时,它需要大约00:00:00.00123343更新每条记录,但随着它的更新越来越多,它需要越来越多.在将近1000条记录之后,大约需要00:00:04秒来更新每条记录.
我想知道为什么会这样?
我认为这只是一个不正确的测量.你的循环没有重启StopWatch,它只是启动并连续停止.所以Elapsed总会增加.
如果要测量整个时间:
dbWatch.Start();
foreach (var record in recordList)
{
DbService.UpdateRecord(Id, ProcessDate, MessageID, task.Result.Email.TryTimes);
}
dbWatch.Stop();
LogMessage(string.Format("All updates took:{0}",dbWatch.Elapsed));
Run Code Online (Sandbox Code Playgroud)
如果要测量每次迭代的时间,请使用StopWatch.Restart:
foreach (var record in recordList)
{
dbWatch.Restart();
DbService.UpdateRecord(Id, ProcessDate, MessageID, task.Result.Email.TryTimes);
dbWatch.Stop();
LogMessage(string.Format("Single database row update took:{0}",dbWatch.Elapsed));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |