Когда вы достигаете точки останова, Windows останавливает процесс и уведомляет отладчик. Он должен переключать контексты, оценивать условия, решать, что нет, вы не хотите получать уведомления об этом, перезапускать процесс и переключаться обратно. Это может занять много процессорных циклов. Если вы делаете это в замкнутом цикле, потребуется на пару порядков больше процессорных циклов, чем в одной итерации цикла.
Если вы хотите немного поработать с вашим кодом, есть способ сделать условные точки останова без дополнительных затрат.
if <condition here> then
asm int 3 end;
Это простая инструкция по сборке, которая вручную отправляет уведомление о точке останова в ОС. Теперь вы можете оценить свое состояние внутри программы, не переключая контексты. Просто убедитесь, что вынули его снова, когда закончите. Если int 3 сработает внутри программы, которая не подключена к отладчику, он вызовет исключение.