我有几段非常处理器密集的代码。我有调试语句用于内部部署和测试,但是当我部署到我的客户站点时,我想做一个没有这些的构建。我目前使用:
ifIsDebugEnabled()
包装日志消息,但这也占用了处理器时间,当我评论所有注销时,性能得到改善。有没有一种标准的方法可以解决这个问题,还是有其他我可以做的事情呢?
谢谢, 理查德
答案 0 :(得分:2)
要优化方法调用,可以在方法上放置ConditionalAttribute
。像这样:
[Conditional("DEBUG")]
void SomeDebugMethod(string message) {
// ...
}
如果代码是在除DEBUG之外的其他配置中编译的,则将删除对此方法的调用。
如果您能够将调试逻辑放在方法中,这比使用#ifdef DEBUG .. #endif
这样的指令更清晰。
答案 1 :(得分:1)
#if DEBUG
#endif
在您的代码中跳过发布版本中的代码...
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以使用条件编译:
#if DEBUG
// code to log here
#endif
如果您正在运行DEBUG模式,代码将仅包含在编译中。您还可以使用项目属性页面创建自己的条件编译指令。
答案 4 :(得分:1)
您可以使用preprocessor directives使调试模式检查在编译时发生...所以当您在没有定义DEBUG的情况下进行编译时,它将完全跳过您的调试代码,从而不会导致性能损失。
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug");
#endif