【问题标题】:What is faster - Storing data in list or in a database? (Android)什么更快 - 将数据存储在列表或数据库中? (安卓)
【发布时间】:2013-09-18 13:26:46
【问题描述】:

我目前正在学校做一个项目(Android 应用程序),我们应该在本地 SQLite 数据库中存储有关用户支出和收入的信息,然后将其显示为各种图表等。

我的问题是;什么会更快?不断地对数据库进行查询以获取有关某些费用的信息,或者只是在启动时进行查询并将返回的值作为对象存储在列表中?

谢谢!

【问题讨论】:

    标签: java android performance sqlite


    【解决方案1】:

    这实际上取决于您需要执行的数据量和查询的复杂性。如果您要处理数千个对象,并且需要遍历列表以检查每个对象的特定属性,那么使用数据库可能会更快。

    【讨论】:

      【解决方案2】:

      一次从数据库中提取每个条目然后将其保存到列表中直到使用时会更快。

      除非您想在这些条目中进行搜索。如果您正在寻找每个看起来像“市场”的条目,我会在 db 中搜索并将结果放入列表中以显示它。

      基本上,您要避免的是在 ListAdapter 调用 getView 并且您需要新数据的确切时间从数据库中检索每个条目。

      【讨论】:

        【解决方案3】:

        将它们存储为列表肯定会更快。这是一个细分

        如果您加载数据并将其保存在列表中,您将始终可以访问它,因为它在内存中并且已经是您想要的格式。

        如果您每次都查询,则涉及三个步骤。
        1) 从内存(硬盘)读取数据
        2) 将其转换为您想要的对象
        3) 将数据存储在内存 (RAM)
        4) 从内存(RAM)中读取数据

        如您所见,步骤过多且执行速度较慢

        【讨论】:

          【解决方案4】:

          访问数据库的成本很高。因此,从数据库中获取所有数据是有意义的。如果数据发生更改,请在 onStop 中更新您的数据库(这是进行清理工作的地方)。

          【讨论】:

            【解决方案5】:

            答案是;这取决于。如果列表中只有少量项目,那么是的,在启动时拉取它们几乎肯定会更快;但是,如果有数千个项目,它可能会使应用程序启动更慢(尽管访问单个项目当然会更快)。

            我的建议是实际测试它,看看哪种方法最适合您拥有的数据集,然后根据经验证据做出决定。

            【讨论】:

              【解决方案6】:

              如果您要遍历对象/数据,那么最好使用数据库进行查询。

              否则,使用 List 使其更快且更易于编码。

              【讨论】:

                猜你喜欢
                • 2013-06-17
                • 2017-04-07
                • 1970-01-01
                • 1970-01-01
                • 2014-02-17
                • 1970-01-01
                • 2014-06-26
                • 1970-01-01
                相关资源
                最近更新 更多