0

これらの 3 つの変数とその使用法のうち、最も速いのはどれですか?

boolean booleanValue = true;
int booleanInt = 1;
byte booleanByte = 1;
char booleanCharI = 1;
char booleanCharS = '1';

それとも何か?( String booleanString = "true";)?

それぞれの利点は何ですか?この場合、パフォーマンスよりもコードの単純さが重要ですか?

4

5 に答える 5

3

幸運なことに、最も明白なアプローチが最速でもあります:boolean変数です。例として、次のような少し複雑なブール式を考えてみます。

c = a && b || o != null && o.equals(p)

ここaで、、、bおよびcは「ブール」変数であり、ブール値を使用している場合にそれを書き直してみてくださいint。かなり多くのロジックを導入する必要があり、パフォーマンスが低下する可能性があり、読みやすさが確実に低下することがわかります。

一般的な注意として、完全なコードベースでプリミティブ型の操作以外に何もしない限り、検討しているさまざまな選択の違いを観察することはできません (おそらく文字列アプローチを除く)。

于 2013-11-05T14:03:11.600 に答える
1

int、short、boolean、および char は、JVM 内では実際には同じデータ型であることに注意してください。たとえば、 boolean - javap -c を含むコードでクラスを逆コンパイルするだけです。ブール値が整数に変換されていることがわかります。したがって、ブール値または整数-パフォーマンスの点で実際に違いはありません。

ブール値を使用すると、ブール値をラップするオブジェクトが生成され、遅くなる可能性がありますが、ブール値は不変オブジェクトであるため、インターン化などを使用できるため、JVM がこれを最適化すると信じています。したがって、パフォーマンスの違いもないと思います。

実際の最適化では、1 つの int 内に 32 個のブール値を格納する整数に基づいて、BitSet または独自のビット セットの実装を使用できます。

于 2013-11-05T14:51:50.100 に答える
0

最速とは言えませんがboolean booleanValue = true;、ブール値の正しい使い方です。

于 2013-11-05T14:03:09.787 に答える
0

これらのケースのいずれにおいても、パフォーマンス上の利点があるとは考えにくいです。またはboolean trueよりも意味があり ます。 intchar 1

Boolean についても考えると、パフォーマンスが向上する可能性があります。boolean はプリミティブ型でメモリ使用量が少ないため、boolean よりも boolean の方がパフォーマンス上の利点があります。

于 2013-11-05T14:03:40.530 に答える
0

すべては使用法に依存します。数百万のブール値を使用する場合は、 の使用を検討してBitSetください。これを使用すると、メモリ使用量が最適化されます。一方、すべてのプリミティブ型は 4 バイトまたは 8 バイトで表され、1 つのアトミック操作で設定されます。

于 2013-11-05T14:04:17.627 に答える