我计划添加DEBUG标记,并在每次if statement
调用之前添加Log.d
public static final boolean DEBUG = FALSE;
if (DEBUG)
{
Log.d(TAG,"Debug"); //dead code
}
是否会在编译时删除死代码,或者每次都会调用if statement
?
答案 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