2

パフォーマンスを向上させるために、文字数の多い文字列を使用する予定です。最適と思われるサイズがあるか知りたいです。たとえば、5000個の文字列を保持できる文字列配列を宣言し、各セルの文字列が5000〜7000文字を保持する場合、パフォーマンスが低下するようなものがあるかどうかを考えています。

ご意見をお聞かせください。

4

2 に答える 2

3

原則として、アンチモニーが述べたように、文字列の制限は、配列に収まる文字数、つまり 2^31-1 です。

あなたが言及しているデータの量は、およそ 100MB のオーダーです。つまり、そのデータのオーダー内に本当に固執している場合、大きな問題ではありません。10 倍以上の使用を考えていた場合は、考え直す必要があるかもしれません

考えられることの 1 つは、String ではなく CharSequence を渡すようにコードを宣言することです。String をオーバーライドすることはできませんが、CharSequence を実装する独自のクラスを作成することはできますが、それによって何らかの最適化 (たとえば、何らかの方法で内部表現を圧縮するなど) が得られることに後で気付く場合があります。

それとは別に、実際にパフォーマンスの問題に遭遇した場合は、意図したとおりにコードを記述し、プロファイルします。

于 2012-08-09T22:14:56.123 に答える
3

文字列リテラルは、定数プールに格納されるため、65535 バイトに制限されています。配列のアドレス指定による 2^31-1 の明らかな制限を除けば、実行時の文字列に制限があるかどうかはわかりません。

編集して整理します。これは Modified Utf8 エンコーディングで 65535 バイトです。null 文字が 2 バイトであり、BMP の外側の文字がサロゲート ペア (4 ではなく 6 バイト) を使用することを除いて、通常の Utf8 と同じです。単に ascii を実行している場合、これは 1 文字あたり 1 バイトです。

于 2012-08-09T21:59:58.990 に答える