条件方法 (Debug.Assert(...)) 的参数是否在发布模式下优化掉了?
Are parameters of conditional methods (Debug.Assert(...)) optimized away in release mode?
我经常在 Debug.Assert()
中嵌入昂贵的 linq 查询。
例如:Debug.Assert(!orderShipmentStatusLogs.GroupBy(c => new { c.Id, c.StartDateTime }).Any(c => c.Count() > 1));
在这种情况下,orderShipmentStatusLogs 可能是一个巨大的列表 - 因此这段代码可能很慢。
为了性能我问自己这是否聪明,我知道 Debug.Assert()
方法在发布模式下被删除,但是通过阅读文档:
Any arguments passed to the method or attribute are still type-checked by the compiler.
https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.conditionalattribute?view=net-6.0
有点怀疑
那么我在这里安全吗,还是我通过添加大量断言不小心减慢了我的应用程序? Debug.Assert()
的参数是否优化掉了?
我经常在 Debug.Assert()
中嵌入昂贵的 linq 查询。
例如:Debug.Assert(!orderShipmentStatusLogs.GroupBy(c => new { c.Id, c.StartDateTime }).Any(c => c.Count() > 1));
在这种情况下,orderShipmentStatusLogs 可能是一个巨大的列表 - 因此这段代码可能很慢。
为了性能我问自己这是否聪明,我知道 Debug.Assert()
方法在发布模式下被删除,但是通过阅读文档:
Any arguments passed to the method or attribute are still type-checked by the compiler. https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.conditionalattribute?view=net-6.0
有点怀疑
那么我在这里安全吗,还是我通过添加大量断言不小心减慢了我的应用程序? Debug.Assert()
的参数是否优化掉了?