我曾经使用一个自定义类来负责日志记录,其实现如下:
public class Logger {
public final static boolean DEBUG = true;
public static void d(String tag, String msg) {
if(DEBUG)
Log.d(tag, msg);
}
}
当我发布应用程序时,我将标志设置为false,然而有人告诉我以下方法不太有效,因为Strings仍在内存中被分配和释放。使用以下这种方式的记录器:
Logger.d("tag", "message");
或者像这样,通过这样做,StringBuilder
将被调用。
Logger.d("tag", "server response: " + response + " timing: " + timing);
这是真的吗?dalvik/compiler不能优化以防止这种行为吗?如果可以,除了将if语句移到外面之外,还有什么我可以做来进行优化吗?