これらの 3 つの変数とその使用法のうち、最も速いのはどれですか?
boolean booleanValue = true;
int booleanInt = 1;
byte booleanByte = 1;
char booleanCharI = 1;
char booleanCharS = '1';
それとも何か?( String booleanString = "true";
)?
それぞれの利点は何ですか?この場合、パフォーマンスよりもコードの単純さが重要ですか?
これらの 3 つの変数とその使用法のうち、最も速いのはどれですか?
boolean booleanValue = true;
int booleanInt = 1;
byte booleanByte = 1;
char booleanCharI = 1;
char booleanCharS = '1';
それとも何か?( String booleanString = "true";
)?
それぞれの利点は何ですか?この場合、パフォーマンスよりもコードの単純さが重要ですか?
幸運なことに、最も明白なアプローチが最速でもあります:boolean
変数です。例として、次のような少し複雑なブール式を考えてみます。
c = a && b || o != null && o.equals(p)
ここa
で、、、b
およびc
は「ブール」変数であり、ブール値を使用している場合にそれを書き直してみてくださいint
。かなり多くのロジックを導入する必要があり、パフォーマンスが低下する可能性があり、読みやすさが確実に低下することがわかります。
一般的な注意として、完全なコードベースでプリミティブ型の操作以外に何もしない限り、検討しているさまざまな選択の違いを観察することはできません (おそらく文字列アプローチを除く)。
int、short、boolean、および char は、JVM 内では実際には同じデータ型であることに注意してください。たとえば、 boolean - javap -c を含むコードでクラスを逆コンパイルするだけです。ブール値が整数に変換されていることがわかります。したがって、ブール値または整数-パフォーマンスの点で実際に違いはありません。
ブール値を使用すると、ブール値をラップするオブジェクトが生成され、遅くなる可能性がありますが、ブール値は不変オブジェクトであるため、インターン化などを使用できるため、JVM がこれを最適化すると信じています。したがって、パフォーマンスの違いもないと思います。
実際の最適化では、1 つの int 内に 32 個のブール値を格納する整数に基づいて、BitSet または独自のビット セットの実装を使用できます。
最速とは言えませんがboolean booleanValue = true;
、ブール値の正しい使い方です。
これらのケースのいずれにおいても、パフォーマンス上の利点があるとは考えにくいです。またはboolean
true
よりも意味があり ます。 int
char
1
Boolean についても考えると、パフォーマンスが向上する可能性があります。boolean はプリミティブ型でメモリ使用量が少ないため、boolean よりも boolean の方がパフォーマンス上の利点があります。
すべては使用法に依存します。数百万のブール値を使用する場合は、 の使用を検討してBitSet
ください。これを使用すると、メモリ使用量が最適化されます。一方、すべてのプリミティブ型は 4 バイトまたは 8 バイトで表され、1 つのアトミック操作で設定されます。