Java 什么更快?将数据存储在列表或数据库中?(安卓)

Java 什么更快?将数据存储在列表或数据库中?(安卓),java,android,performance,sqlite,Java,Android,Performance,Sqlite,我目前正在学校做一个项目(Android应用程序),我们应该在本地SQLite数据库中存储关于用户费用和收入的信息,然后将其显示为各种图表,等等 我的问题是,;什么会更快?不断地对数据库进行查询以获取某些费用的信息,或者只是在启动时进行查询并将返回的值作为对象存储在列表中 谢谢 一次从数据库中提取每个条目,然后将其保存到列表中,直到使用为止,速度更快 除非你想在这些条目中搜索。如果你正在寻找每一个看起来像“市场”的条目,我会在db中搜索,并将结果放在列表中显示出来 基本上,您要避免的是在List

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

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


谢谢

一次从数据库中提取每个条目,然后将其保存到列表中,直到使用为止,速度更快

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


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

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

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

如果每次都进行查询,则需要执行三个步骤。
1) 从存储器(硬盘驱动器)读取数据
2) 将其转换为所需的对象
3) 在内存(RAM)中存储数据
4) 从内存(RAM)读取数据


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

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

答案是;视情况而定。如果列表中只有少量项目,那么在启动时几乎肯定会更快地提取它们;但是,如果有数千个项目,则可能会使应用程序启动慢得多(尽管访问单个项目当然会更快)


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

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

否则,请使用列表使其更快、更易于编码