【问题标题】:multiple if() or database read is faster?多个 if() 或数据库读取更快?
【发布时间】:2011-02-06 15:23:45
【问题描述】:

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

【问题讨论】:

    标签: android database if-statement performance


    【解决方案1】:

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

    最好的方法是将代码部分包装在 // 开始跟踪到“/sdcard/calc.trace” Debug.startMethodTracing("calc"); // ... // 停止追踪 Debug.stopMethodTracing(); (取自http://developer.android.com/guide/developing/tools/traceview.html)。然后从 sdcard 中获取文件,在 Traceview 中打开并比较两种选择。另一种更简单的方法是 Log.d (TAG, "Start: " + System.currentTimeMillis ());,做你的代码,然后 Log.d (TAG, "End: " + System.currentTimeMillis ());对两种选择都这样做,看看哪一种更快。

    在此处阅读有关该主题的更多信息:http://developer.android.com/guide/practices/design/performance.html

    【讨论】:

    • 是的,你说得对,我不调用 cpu 密集型函数,我也会尝试速度测试...
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 2011-09-14
      • 2010-12-20
      • 2011-08-11
      • 1970-01-01
      • 2012-06-02
      • 2011-07-07
      • 1970-01-01
      相关资源
      最近更新 更多