1

Objective-C を Android に移植しています。ソース アプリは構造配列に多くのデータを格納し、ユーザーがグラフ上でポインターをドラッグすると、グラフ上のポイントのほぼリアルタイムの分析を提供するために、結果セットの配列と計算を検索するためのいくつかの高パフォーマンスのメソッドを備えています。彼らの指。計算結果は、グラフを囲むさまざまなビューの値を更新するために使用されます。

これは、約 7.5k の構造を含む例です。

structDataFeedReduced gFeedData[7662] = {
1233,@"",12.466667,26.166667,@"AARS",0,0,0,1.000000,-1,1,1,
6760,@"",15.816667,41.033333,@"DCTT",1,1,1,12.000000,-1,1,2,
8117,@"",44.016667,144.283333,@"SKDD",2,1,2,9.000000,-1,1,1,
8666283,@"WS",42.676666,40.006668,@"DLCC",3,2,3,-5.000000,-1,1,6,
...
...
...
};

私の質問は、このデータを静的に Java に格納する最良の方法は何ですか?

ロード時または実行時の計算にデータを提供するために、十分なパフォーマンスが得られない次のことを試しました。

  1. SQL ライト。
  2. アセットに保存されているファイルからの読み取り。
  3. 文字列配列として静的に格納し、Objective-C 構造をミラーリングするクラスを使用して、オブジェクトへの初期化でそれらを処理します (たとえば、文字列データから int、bool、double などに変換します)。
  4. arrays.xml に格納し、オブジェクトへの初期化でそれらを処理する

私が試すことができる他のパターンはありますか?何もない場合は、上記の 3 または 4 を優先します。実行時の応答を良好にするために、読み込みと初期化のパフォーマンスをいくらか犠牲にするからです。

私のバックストップは、JNI を使用してこれをネイティブ コードにプッシュすることです。おそらく、これが理にかなっている唯一のオプションですか?

ありがとう...

4

1 に答える 1

3

そのデータをコードとして保持するだけです。クラスを定義してStructDataFeedReducedから、初期化コードを次のように変更できます。

static StructDataFeedReduced[] gFeedData = new StructDataFeedReduced[] {
    new StructDataFeedReduced(1233,"",12.466667,26.166667,"AARS",0,0,0,1.000000,-1,1,1),
    new StructDataFeedReduced(6760,"",15.816667,41.033333,"DCTT",1,1,1,12.000000,-1,1,2),
    ...
}

のコンストラクターはStructDataFeedReduced、必要に応じて内部フィールドにデータを格納できます。

于 2012-07-29T15:51:23.870 に答える