我写了一些代码来操作大约 6 个包含大量行的表。我花了大约 4 分钟来完成工作,但它正确完成。后来,当我添加更多尝试捕获块时,我开始收到超时。太多的尝试捕获块是否可能导致超时?如果不是,可能出现什么问题?
我首先通过OleDbDataAdapter从*.mdb读取数据,然后读取/写入/更新MS SQL。
取决于引发异常的频率。实际上,try-catch bloc 会在引发异常时显着减慢您的代码速度。在我的英特尔 i5-4440 上,调试时每个捕获块最多需要 30 毫秒。因此,某些具有 1000 次迭代的循环(抛出和捕获异常)将需要 30 秒才能完成。
简单的证明代码示例
[Test]
public void Test()
{
var timer = new Stopwatch();
timer.Start();
for (int i = 0; i < 1000; i++)
{
try
{
throw new Exception();
}
catch (Exception)
{
// do nothing
}
}
timer.Stop();
Console.WriteLine(timer.ElapsedTicks);
timer.Reset();
timer.Start();
for (int i = 0; i < 1000; i++)
{
try
{
// do nothing
}
catch (Exception)
{
// do nothing
}
}
timer.Stop();
Console.WriteLine(timer.ElapsedTicks);
}
我的 CPU 上的输出(不在调试中):
19119
13