开发者

Log.d and impact on performance

开发者 https://www.devze.com 2023-01-17 17:48 出处:网络
I\'m not entirely sure about what I\'m rea开发者_如何学运维ding in the documentation. Is it ok to leave a bunch of log.d pieces of code scattered about, or should I comment them out so that they don\'

I'm not entirely sure about what I'm rea开发者_如何学运维ding in the documentation. Is it ok to leave a bunch of log.d pieces of code scattered about, or should I comment them out so that they don't impact my app's performance.

Thanks,

I'm a little confused because if you read about the log object (documentation) you see this:

"The order in terms of verbosity, from least to most is ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled into an application except during development. Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept. "

It almost sounded like it's ok to leave debug messages in there because they are "stripped." Anyway, thanks for the answers, I'll comment them out when I'm done. Not like I need them in there once the app is completed.

Thanks


Log has impact on performance, so it's recommended that you comment it out or log with conditional statements.

For example

public class MyActivity extends Activity {
// Debugging
 private static final String TAG = "MyApp";
 private static final boolean D = true;
 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(D) Log.e(TAG, "MyActivity.onCreate debug message");
 }

Then in when you publish your release version just change "D" to false


My solution:

  • Add unguarded log statements wherever you like
  • Strip them out for release builds


Definitely comment them out. They add up quickly and could noticeably slow down your app, especially if you have them in loops.


Simply use code guard methods.

if (Log.isLoggable(LOG_TAG, Log.DEBUG)) {
Log.d(LOG_TAG, "Your log here");
}


Yes print, println, Log.d, Log.e and all similar methods affect performance.

The solution

create a class named C

class C{
public static String TAG="My_debug_tag";
public static boolean isInTesting=true;

public static void log(String tag, String msg){
 if(!isInTesting) return;

Log.d(tag==null?TAG:tag, msg);
 
}
}

and use these methods for all your logs, and when you are ready to generate final .apk/.aab just set isInTesting=false to disable all logs from this method.

0

精彩评论

暂无评论...
验证码 换一张
取 消