Android アプリケーションの起動時に、約 2MB のデータをすばやくロードする必要があります。このすべてのデータをメモリに保存する必要があるため、SQLite などは代替手段ではありません。
データは約 3000 のint[][]
配列で構成されています。配列の次元は平均で [7][7] 前後です。
最初にデスクトップにいくつかのプロトタイプを実装し、それを Android に移植しました。デスクトップでは、単純に Java の (デ) シリアル化を使用しました。そのデータの逆シリアル化には、デスクトップ コンピューターで約 90 ミリ秒かかります。
ただし、Android 2.2.1 では、HTC Magic で同じプロセスに約 15 秒 (!) かかります。非常に遅いため、別のスレッドで逆シリアル化しないと、アプリが強制終了されます。全体として、これは容認できないほど遅いです。
私は何を間違っていますか?するべきか
- プロトコルバッファのようなものに切り替えますか? それは実際にいくつかの大きさの逆シリアル化のプロセスをスピードアップするでしょうか?結局、私が逆シリアル化しているのは複雑なオブジェクトではなく、
int[][]
配列だけですか?! - 独自のカスタム バイナリ ファイル形式を設計する 私はそれをやったことがなく、どこから始めればいいのかわからない
- 何か他のことをしますか?