Log方法是否会耗费大量执行时间?

时间:2017-11-16 10:21:20

标签: android

在我的项目中,Log函数已在很多地方使用,并且没有任何“if语句”来控制它。我们使用如下:

import numpy as np
i = [1,2,3,4,5]
i.reverse()
result=np.array([[g+x for g in i] for x in range(5)])

当我通过android Profiler看到消费者的时间时,Log函数似乎花了很多时间。

Log time cost

有谁知道Log功能的实际消耗时间?非常感谢!

2 个答案:

答案 0 :(得分:3)

来自documentation

  

详细程度的顺序,从最少到最多,是ERROR,WARN,   信息,调查,VERBOSE。不应该将详细编译成一个   申请除了在开发期间。调试日志是在但编译的   在运行时剥离。始终保留错误,警告和信息日志。

因此,如果您希望仅在调试时显示日志,则可以依赖DEBUG日志(Log.d),因为它们会针对发布版本进行删除(如果您依赖于日志哑,这可能会很糟糕)来自用户反馈)。当然,如果您只是使用日志进行调试并计划在完成后删除它们,那么它并不重要。

至于时间多少,我认为这是错误的问题,因为设备之间的时间会有所不同。问题应该是"是否有重大成本?"

要回答问题 - 是,日志绝对会对性能造成严重压力,除了最重要的代码之外,应该在发布之前从代码中删除。尽量避免在主/渲染线程上打印日志,因为这些将具有直接的&对您应用的响应能力产生重大影响。

答案 1 :(得分:1)

除了Gils答案是正确的: 我建议使用Timber进行Android日志记录。

除了Timber可以添加到您的开发中的许多有用功能之外,您还可以执行类似的操作来避免发布应用程序中的Log语句:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //Only log when we are in DEBUG mode
        if (BuildConfig.DEBUG) {
            Timber.plant(new Timber.DebugTree());
        }
}