c#优化了一些日志语句

时间:2011-07-04 09:54:47

标签: c# performance

我有几段非常处理器密集的代码。我有调试语句用于内部部署和测试,但是当我部署到我的客户站点时,我想做一个没有这些的构建。我目前使用:

 ifIsDebugEnabled() 

包装日志消息,但这也占用了处理器时间,当我评论所有注销时,性能得到改善。有没有一种标准的方法可以解决这个问题,还是有其他我可以做的事情呢?

谢谢, 理查德

5 个答案:

答案 0 :(得分:2)

要优化方法调用,可以在方法上放置ConditionalAttribute。像这样:

[Conditional("DEBUG")]
void SomeDebugMethod(string message) { 
    // ...
}

如果代码是在除DEBUG之外的其他配置中编译的,则将删除对此方法的调用。

如果您能够将调试逻辑放在方法中,这比使用#ifdef DEBUG .. #endif这样的指令更清晰。

答案 1 :(得分:1)

#if DEBUG
#endif

在您的代码中跳过发布版本中的代码...

答案 2 :(得分:1)

您可以使用预处理器指令包装代码,如下所示:

#if DEBUG
// debug code
#endif

有完整的可用指令列表here

答案 3 :(得分:1)

您可以使用条件编译:

#if DEBUG
// code to log here
#endif

如果您正在运行DEBUG模式,代码将仅包含在编译中。您还可以使用项目属性页面创建自己的条件编译指令。

答案 4 :(得分:1)

您可以使用preprocessor directives使调试模式检查在编译时发生...所以当您在没有定义DEBUG的情况下进行编译时,它将完全跳过您的调试代码,从而不会导致性能损失。

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug");
#endif