【发布时间】:2012-03-01 17:08:32
【问题描述】:
我在调试模式下运行类似于以下代码:
for (int i = 0; i < 5000; i++)
{
for (int j = 0; j < 10; j++)
{
DoSomething();
}
}
有时我会从 VS 2010 收到“检测到 ContextSwitchDeadlock”。似乎可用 RAM 减少时性能会下降。我有 8GB 并且能够在大约 8 分钟内运行程序(循环完成后有很多 DB 命中,所以 8 分钟不是循环时间),在 4GB 机器上时间翻了一番!根据我的红色,MDA 被触发,因为我的循环运行时间超过 60 秒。本质上,这是一个代码完全阻塞应用程序的警告。
我可以做些什么来避免这些情况并提高速度?
谢谢!
【问题讨论】:
-
为了评论提高速度,我们需要查看代码。
-
... -
该代码允许的字符数超过#,所以我不确定如何发布它。
-
我的意思是更多实际上在“DoSomething()”中的代码,你不能做太多的事情来加速基本的 for 循环,这是在循环中正在做的事情需要时间。 Payo 下面提供的链接是一个很好的建议,这项工作应该在单独的后台工作线程中完成。
标签: c# visual-studio debugging visual-studio-debugging