是否建议使用if(debug)语句?

时间:2013-02-03 09:59:56

标签: android performance

我计划添加DEBUG标记,并在每次if statement调用之前添加Log.d

 public static final boolean DEBUG = FALSE;
 if (DEBUG)
 {
    Log.d(TAG,"Debug"); //dead code
 }

是否会在编译时删除死代码,或者每次都会调用if statement

3 个答案:

答案 0 :(得分:1)

不,它会增加代码的详细程度,只需使用日志库来实现此目的,例如Log4J ......

logger.debug("Here is some DEBUG");

在Android中,您可以使用android-logging-log4j ...

答案 1 :(得分:1)

它没有完全删除,但由于CPU的分支预测,下一步没有性能影响。

理想情况下,您应该使用记录器的日志记录级别来确定是否应该调用记录器。

注意:这样一个简单的方法调用几乎没有开销,无论你是否检查(并且库应该检查)你获得性能优势的地方是你在日志消息中做了什么,如

LOGGER.debug("The map is " + map);

在这种情况下,只有在启用调试时才会显示调试消息,但是每次都会构建字符串消息,这意味着更高效。

if(LOGGER.isDebugEnabled())
    LOGGER.debug("The map is " + map);

答案 2 :(得分:1)

您的调试代码将始终执行(始终为if)。 顺便说一句,Android已经有这种类型的标志:BuildConfig.DEBUG