【问题标题】:What is the Realm native integer size? Int vs Int8, Int16, Int32什么是 Realm 本机整数大小? Int 与 Int8、Int16、Int32
【发布时间】:2016-03-12 02:09:02
【问题描述】:

TL;DR:我正在构建一个数据集以在 iOS 和 Android 之间共享。我应该调整整数大小以匹配它们的实际范围,还是只将所有内容都设为 Integer 并在 Swift 中使用 Int 并在 Java 和 Swift 中使用 long

在典型的 SQL 数据库中,存储大量 4 字节整数将占用比 1 字节整数多约 4 倍的空间[1]。但是,我在this answer 中读到整数是按位压缩存储的,在Realm Java help 中,整数类型 byte、short、int 和 long 都映射到同一个类型(实际上很长)在领域内。所以,从字里行间看,无论我使用什么整数子类型,磁盘上的存储似乎都是一样的。

那么,从纯领域/数据库的角度来看,我应该分别在 Swift 和 Java 中使用 Intlong 吗? (即抛开语言差异,如转换、内存大小等)

如果一个整数字段被索引,这对选择的类型有什么影响吗?

PS:非常感谢 Realm 团队在 SO 上提供的出色文档和良好支持!

[1] 是的,我知道它比这更复杂。

【问题讨论】:

    标签: realm


    【解决方案1】:

    您的解释是正确的:Realm 中的所有整数类型都使用相同的底层存储类型,并且该存储类型根据存储的值范围调整每个值使用的位数。例如,如果您只存储 0-15 范围内的值,那么每个值将使用比存储 0-65,535 范围内的值更少的位。同样,整数属性的所有索引都使用一种通用的存储类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2010-11-08
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多