我需要在我的 Android 应用程序启动时快速加载大约 2MB 的数据。我真的需要内存中的所有这些数据,所以像 SQLite 之类的东西不是替代品。
数据由大约 3000 个int[][]
数组组成。数组维度平均约为 [7][7]。
我首先在我的桌面上实现了一些原型,并将其移植到了 android。在桌面上,我只是简单地使用了 Java 的(反)序列化。在我的台式计算机上,该数据的反序列化大约需要 90 毫秒。
然而,在 Android 2.2.1 上,在我的 HTC Magic 上,相同的过程大约需要 15 秒(!)。它太慢了,如果我不单独进行反序列化,我的应用程序将被杀死。总而言之,这是令人无法接受的缓慢。
我究竟做错了什么?我是不是该
- 切换到协议缓冲区之类的东西?这真的会加快几个数量级的反序列化过程吗?毕竟,我要反序列化的不是复杂的对象,只是
int[][]
数组?! - 设计我自己的自定义二进制文件格式?我以前从未这样做过,也不知道从哪里开始
- 做别的事?