gpt4 book ai didi

android - Realm 惰性查询——它们比 OrmLite 快吗?

转载 作者:行者123 更新时间:2023-11-29 00:04:13 25 4
gpt4 key购买 nike

我最近阅读了 Realm 数据库的内部文档,他们的所有查询都是惰性的,我不确定,如果我正确理解这可能导致的影响。

让我解释一下我是如何理解它的,如果我错了,请随时纠正我。我的看法是,每当我发出这样的命令时 mRealm.where(Customer.class).equalTo(Customer.ID, "someId").findFirst(); 我没有得到 Java 包含所有填充数据的对象,包含在该客户的数据库中。相反,每当我尝试访问这个“获取的”对象的某些字段时,就会进行查询。因此我想知道,如果它比 OrmLite 更快,我是否想访问给定类的所有字段?

另一个与之相关的问题。对将显示在 ListViewRecyclerView 中的项目使用 Realm db 是个好主意吗?如果在滚动列表的过程中不停地查询,会不会对性能造成严重影响?

如果有人能更详细地向我解释这一点,我将非常高兴。

最佳答案

由我们的查询创建的 RealmResults 是对底层数据的自动更新 View 。您可以将它们视为类型安全的游标,并且它们具有一些相同的权衡,但与 Cursors 不同的是,我们不会将数据复制到 CursorWindow 中,因此没有分页效果。您可以访问整个对象图,而不必担心达到 CursorWindow 限制。

大多数 ORM 将所有数据复制到 Java 堆内存中。这在时间和内存方面都可能是一个非常昂贵的操作+你可能有很多你甚至不需要的额外数据。这样做的好处是您只需执行一次,然后就可以非常快速地访问数据。

另一方面,Realm 仅加载您实际需要的数据。这也包括个别 Realm 。因此,如果您有一个 ListView 显示 10 个项目中的 1 个字段,我们将只加载这 10 个字段,就像 CursorAdapter 一样。它必须从 native 内存中加载该数据,尽管这比从 Java 堆中读取数据更昂贵。

所以回答你的问题。是的,Realm 与 ListView 完美配合。

关于android - Realm 惰性查询——它们比 OrmLite 快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com