java - 如何在 Android 上高效存储位集

标签 java android xml serialization bitmap

我的应用程序要求我在 Android 平台上存储位组以及一些附带的元数据(目前只读)。现在显然我可以实现 Serialized 接口(interface),但我听说它在 Android 上非常慢(我可以想象必须对自定义 VM 和编译器做一些事情,从而使此类反射功能效率低下)。 我应该:

  1. 使用 Android 的 Parcel 系统,这似乎是一种“辅助”编码技术。
  2. 使用自定义二进制格式(可能是删除了 header 信息的 BMP 样式)。
  3. 手动存储到 XML 文件中,使用 XML 解析器检索数据。

据我所知,XML 序列化或打包在 Android 上并不是真正向后兼容? XML 的吸引力当然在于这些持久文件可以在常规文本编辑器中进行编辑。这让我陷入了困境,因为我讨厌编写冗余的代码。

在这一点上,我非常倾向于第一个选项(即位集被分割)。有经验丰富的 Java/Android 程序员愿意告诉我,我可以期望它的执行效果如何吗?我是否必须将位集扩展为 boolean 数组才能获得可接受的运行时性能?当然,这样做的问题是,即使是基本的基准测试也必须在 Dalvik VM 上运行,因为我不能指望 Sun 在 x86 上的 VM 具有与 ARM 上的 Android 类似的性能。 Android模拟器是如何工作的?它是 x86 主机之上的虚拟机,还是模拟 ARM 指令集并运行针对 ARM 的虚拟机?

我希望这篇ADD帖子没有让大家感到困惑,因为它让我感到困惑。 :D

最佳答案

您听说序列化速度很慢,所以您打算使用 XML?哈哈。

您需要为自己编写一些现实的基准,序列化您实际需要处理的位集类型(大与小,密集与稀疏,等等)。我强烈推荐http://code.google.com/p/caliper/用于编写您的基准。 http://code.google.com/p/vogar/知道如何在 Android 设备上运行 caliper 基准测试。

正如我在Designing for Performance中所说的那样就性能而言,模拟器行为与设备行为完全不同。您需要在您真正关心的性能最低的设备上进行测试。

关于java - 如何在 Android 上高效存储位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376560/

相关文章:

xml - 如何在draw.io中导出XML?

java - 如何使用 JUnit 和 Hamcrest 测试 .equals() 方法

java - 内部类中 this.new 和 bare this 的行为

android - 如何通过改造处理网络故障后重复请求的队列

android - 如何将 utf-16 字符放入 Android 字符串资源中?

javascript - Javascript 中的突变事件不起作用

java - 在android studio上读取textview中的html对象

java - 我可以在 Java 中推断子类型吗?

java - 在我的 android 编程代码 java.lang 中出现错误

java - 在不填充默认属性的情况下在 JAVA SAX 中解析 XML