C# 使用条件断点时,Visual Studio会减慢执行速度

C# 使用条件断点时,Visual Studio会减慢执行速度,c#,vb.net,visual-studio,visual-studio-2012,C#,Vb.net,Visual Studio,Visual Studio 2012,我使用的For循环如下所示: for (int i = 0; i < 1000; i++) { int mod = i % 1795; //Do some operations here } for(int i=0;i

我使用的For循环如下所示:

 for (int i = 0; i < 1000; i++)
    {
        int mod = i % 1795;
       //Do some operations here
    }
for(int i=0;i<1000;i++)
{
int mod=i%1795;
//在这里做一些手术
}
它工作得很好,但是当我设置一个断点并将条件应用为mod=150时,它会减慢执行速度。为什么会这样?当我添加这样的条件断点时,实际发生了什么


硬件不支持条件断点;处理器只支持无条件断点。当您创建条件断点时,调试器会在代码中插入一个无条件断点。当到达无条件断点时,调试器将评估您的条件,如果失败,则继续执行。由于每次经过断点位置都需要停止并涉及调试器,因此代码的运行速度要慢得多

根据代码执行的频率和构建代码所需的时间,仅添加

if (your condition)
{
    System.Diagnostics.Debugger.Break();
}

或者类似的,只需重新构建应用程序。

“Debugger.Break()”与“编辑并继续”(如果可用)结合使用时也能很好地发挥作用。那么你甚至不需要重建(至少不需要立即重建)。为什么条件断点要比if后跟break语句慢几个数量级呢?说真的,试一试,这太荒谬了。@EdS。因为停止您的程序,让调试器评估条件,如果错误,则恢复您的程序至少需要一个上下文切换,这比程序代码中的分支要昂贵得多。对不起,我完全误解了这一点:“调试器在代码中插入了一个无条件断点”。我想我也没有继续阅读,因为我记得你说调试器正在插入一个条件断点,例如,与分支完全相同。别介意,一定是漫长的一天。。。