Chr*_*ert 1 c# performance logging windows-phone-7
我有一个非常常见的场景,即自我实现的ILogger接口.它包含几个方法,如_logger.Debug("Some stuff")等.该实现由LoggingService提供,并以正常方式在类中使用.
现在我有一个关于性能的问题,我正在为Windows Phone 7写作,而且由于这些设备的功能有限,所以很少有事情可能很重要.
我不想:
我看到它的方式,在发布版本中,我只返回NullLoggers,它包含一个空接口的实现,什么都不做.
问题是:编译器是否识别出这样的事情(可能很难,他在编译时无法知道我分配的记录器).有什么方法可以给.NET提示吗?
我的问题的原因,我知道进入一个空函数不会造成很大的延迟,没有问题.但是我的应用程序的源代码中有很多字符串,如果它们从未使用过,它们实际上并不需要成为我的应用程序的一部分......
或者我是否过度思考一个小问题(也许"字符串 - 代码"比率在我的代码编辑器中看起来很糟糕,而且无论如何都没什么大不了的)
谢谢你的提示,
克里斯
使用条件属性:
[Conditional("DEBUG")]
public void Debug(string message) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
对于与条件属性中的字符串不匹配的任何构建配置,编译器将删除对此方法的所有调用.请注意,此属性适用于方法而不是调用站点.另请注意,删除的是调用站点指令,而不是方法本身.