在我的项目中,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功能的实际消耗时间?非常感谢!
答案 0 :(得分:3)
详细程度的顺序,从最少到最多,是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());
}
}