3

私のアプリを実行するには、定義ごとに 3 つの配列 (文字列の配列と整数の 2 つの配列) が必要です。各配列の長さは 100 です。これらの配列をアプリに追加するには、次の 2 つの方法を考えました。

今、私は疑問に思っています:

  1. メモリと効率の点で最良のアプローチは何ですか?
  2. 最初のアプローチでは、アプリに必要なメモリが増加しますか? 2 つ目は、遅延や応答の問題を引き起こしますか?
  3. 検討すべきより良いアプローチはありますか?
4

4 に答える 4

2

配列がすべての言語などで同じである場合は、Utils クラスでハードコーディングします。リソースとしてそれらを持っている場合、アプリは実行時にファイルを読み取る必要があり、コードに既に含まれているよりもはるかに遅いため、これは確かに最速の方法です。どの方法でも、アプリの全体的なサイズはそれほど変わりません。アプリのパッケージのどこかにデータがあります。コードでもリソース内のテキストファイルでもかまいません。実際には、コード内のハードコードされた整数はバイナリとして整数として格納されるため、必要なメモリはわずかに少なくなります (Java のすべての整数を格納するには 4 バイトが必要ですが、テキストファイルの 1000000000 のような整数には 10 バイトが必要です)。

これらの配列が異なる言語などで異なる場合にのみ、リソースでソリューションを使用する必要があります。

于 2013-04-21T07:27:15.413 に答える
1

データをテキスト ファイルまたはプロパティ ファイルに格納します。そして、これらの詳細への要求があれば、それらを配列で読み取ります。

そして、必要に応じてそれをメモリに保持できます。

于 2013-04-21T07:17:01.760 に答える
1

主に、新しいコードや互換性の理由を展開しなくても簡単に変更できるため、それらをファイルに外部的に配置することをお勧めします。たとえば、起動時に、または (動的) Utils クラスに必要なときに 1 回だけ読み込むことで、効率を高めることができます。

アプリケーションからの迅速な応答が必要な場合 (または必要な場合)、文字列が比較的小さい場合は、より効率的な選択肢 (ハードコード/起動時に 1 回ロード) を選択することは間違いありません。200Integersと 100 (小)Stringsは、実際にはほとんどスペースを占有しません。平均 100 文字のaString[100]は約 24 kB を占め、200 文字はint824 バイトのメモリ (配列オブジェクトのオーバーヘッドを含む) を占めます。

于 2013-04-21T07:32:55.950 に答える
0

これは通常の時間とスペースのトレードオフです。あなたが言及した2つのアプローチを組み合わせます。リソース ファイルから配列をロードし、いくつかの事前定義された getter メソッドを介して配列にアクセスします。これにより、配列を使用するコードに触れることなく、時間または空間が問題になると思われる問題が発生した場合に、後でアプローチを変更できます。

于 2013-04-21T07:32:01.933 に答える