byte
の代わりにを使用しています(2つの状態が必要な場合)。パフォーマンスに便利です。まったく錯覚しています...すべてのスペース利益は整列によって平準化されていますか?Javaでバイトまたはintの代わりにブール値を使う
答えて
コードをプロファイリングしていないかぎり、どちらを使用しても問題はありません。この最適化を行うと、読みやすさの面でコストがかかることになります。ほとんどの場合、このようなマイクロ最適化はパフォーマンスの向上に値するものではありません。 Oracleによると
、
ブール:...このデータ型は、1ビットの情報を表すが、その 「サイズ」は、正確に定義されていますものではありません。
はい、ブール値は1ビットしか使用できません。しかし、もっと重要なのは、コードを読んでいる別の開発者にとっては、2つの可能な状態しかないことを明確にしているからです。
答えは、JVMとコードによって異なります。確実に確認する唯一の方法は、実際のコードをプロファイリングすることです。
私は一度、ミニショップ(16ビットマシン)で相談しました。
時には、人々は16個のブール値フラグのためのスペースを含むグローバルな "フラグワード"を持つことになります。
これはスペースを節約するためです。
フラグをテストするには2つの16ビット命令が必要であり、3つ以上のフラグが必要です。
「ペニー・ワイズ、ポンド・ア・フール」の素晴らしい例! –
表現したい状態が2つしかなく、メモリ使用量を減らしたい場合は、java.util.BitSet
を使用できます。
ブール値が1バイトと同じ量の領域を使用するほとんどのJVMだけです。バイト/ブール値へのアクセスは、intまたはlongへのアクセスよりも機能します。したがって、パフォーマンスが唯一の考慮事項であれば、intまたはlongの方が高速になります。スレッド間で値を共有すると、キャッシュライン全体をフィールドに予約する利点があります(極端な場合)。これは多くのCPUで64バイトです。
- 1. 、OptionParserは入力値の代わりにブール値を返します
- 2. の代わりに、私はブール代数を使用したい文、
- 3. Javaのジェネリックのリターンはint []の代わりに整数[]
- 4. 文字列の代わりにブール値を持つSelectListItem
- 5. 円の代わりに、intの代わりにdouble値で配置する方法は?
- 6. ブール値を1または0の代わりに真または偽として取得する
- 7. Java int []ベクトルはデータの代わりにポイントを与えています。
- 8. string :: size_typeの代わりにint
- 9. MySQLテーブルのブール値フィールドの代わりにenum( 'y'、 'n')を使用するのは悪いですか?
- 10. WPFでDataGridCheckBoxColumnの代わりにピクチャまたはアイコンを使用
- 11. Java Android - 復号化されたバイト配列 "Hello World!"の代わりに255バイト長さ
- 12. C - アドレス/ポインタ値の代わりに真のint値をvoidポインタに代入する?
- 13. mysqlに4バイトまたは8バイトの代わりに整数を格納するためにNバイトを割り当てる方法は?
- 14. GETの代わりにオブジェクトを使う
- 15. 2ブール値をintに変換する
- 16. intをブール値に変換する
- 17. nullの代わりにデフォルト値を返すJavaマップの実装
- 18. Javaでhoptoadの代わりに
- 19. WebSocketsまたはphonegapの代わりに?
- 20. executorThreadsPoolの代わりにjavaパラレルストリームを使用する方法は?
- 21. numpyブール値の大きい配列間の比較は、boolean配列の代わりにFalseを返します
- 22. なぜ彼は "int"を使用する代わりに "typedef vector <double> :: size_type"を使用しましたか
- 23. composer.jsonの代わりに使うComposerオプション?
- 24. Intが++の代わりに、私はintに、私は、ボタンを押すたびに値1を追加しようとしている1
- 25. client.get()の値は、実際の値の代わりに「true」です
- 26. 延長または代わりに
- 27. 大規模なテーブルのデータセットにGUIDの代わりにInt PKを使用
- 28. どのようにを変換する:(int)5(バイト)0x05 Java?
- 29. javaのservicewrapperの代わりに?
- 30. Wordpress Sql meta_valueは文字列の代わりにintを返します
[ブール値](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) - このデータ型は1ビットの情報を表しますが、その「サイズ」は正確に定義される。 – paislee
このデータタイプは1ビットの情報を表しますが、その「サイズ」は正確に定義されたものではありません。 –
それはそうかもしれませんが。最適なスペースを使用するためのJVMを提供するいくつかの最適化はありますか? –