我在.NET 6 ASP.NET API中有一个条件断点,这会导致程序运行速度大大降低。如何使用条件断点而不会对性能造成这种影响?
一旦我禁用了条件断点,它就会在几秒钟内完成并相当快地返回响应,如果我放置一个没有条件的常规断点来检查,它就会像它应该的那样快速地命中断点。这是有这个问题的条件断点,它让我在命中断点之前等待超过10分钟。
一段代码:
List<EntityModel> _data;
public EntityFieldModel ResolveSingle(Field mergeField, EntityModel entity = null)
{
if (!string.IsNullOrEmpty(mergeField.FilterField) &&
!string.IsNullOrEmpty(mergeField.FilterValue))
foreach (EntityModel entityModel in _data)
foreach (EntityFieldModel fieldProperty in entityModel.FieldProperties)
// The break point is on the if-statement below
if (
entityModel.DatasetId == mergeField.DataSet &&
fieldProperty.FieldName == mergeField.FilterField &&
fieldProperty.GetFormattedValue(string.Empty) == mergeField.FilterValue
)
{
entity = entityModel;
break;
}
...
}
断点条件:
mergeField.FilterValue == "Lorem Ipsum" &&
entityModel.DatasetId == mergeField.DataSet &&
fieldProperty.Value.GetType() == typeof(EntityReference)
这是条件断点的常见问题吗?如何解决?
1条答案
按热度按时间5us2dqdw1#
这是意料之中的。条件断点将导致程序中断,切换到调试器,然后由调试器计算表达式。所以在幕后,条件断点需要调试器和被测应用程序之间的大量通信。2这是昂贵的。3因此,将条件断点放置在执行多次的行上将对性能产生重大影响。如果你需要分析一段代码中的一个特定问题,而这段代码被执行了很多次,那么在代码中引入条件并重新构建通常会更快,就像这样: