多个if()或数据库读取更快?

时间:2011-02-06 15:23:45

标签: android database if-statement performance

我需要在onCreate()中根据存储在SharedPrefrences中的值读取一些值... 所以我可以在许多if ifif语句之后或者从数据库中读取值时获得我想要的值! 哪个会更快?多个if或者从db中搜索和读取?

2 个答案:

答案 0 :(得分:1)

ifs本身不是问题。如果他们不调用cpu密集型函数,那么它们会非常快,尤其是在Froyo或更高版本上,这要归功于JIT。 从DB读取可能非常快,但也可能非常慢。 NAND在性能方面是不可预测的,并发I / O将导致明显的延迟。如果您确定不在ifs中调用重量级函数,我会选择它们。

最好的方法是将代码段包装进去     //开始追踪到“/sdcard/calc.trace”     Debug.startMethodTracing( “计算值”);     // ...     //停止追踪     Debug.stopMethodTracing(); (取自http://developer.android.com/guide/developing/tools/traceview.html)。然后从SD卡中获取文件,在Traceview中打开并比较两个备选方案。另一个更简单的方法是Log.d(TAG,“开始:”+ System.currentTimeMillis());,做你的代码,然后是Log.d(TAG,“End:”+ System.currentTimeMillis());为两种替代方案做到这一点,看看哪一种更快。

在此处详细了解该主题:http://developer.android.com/guide/practices/design/performance.html

答案 1 :(得分:0)

同意@kread,但这是我的通知。 至于我从DB读取不应该在onCreate()方法中执行,因为它是一个IO操作。它可以显着阻止GUI线程。数据库查询应该转移到一个单独的线程。

相关问题