使用boolean
而不是byte
(如果我需要2個狀態)Java對性能有用,或者它只是錯覺......所有的空間利潤都通過對齊來平穩嗎?在Java中使用布爾代替byte或int
0
A
回答
4
除非您已經對您的代碼進行了剖析,否則您應該使用哪一個更清楚,並確定進行此優化是值得的可讀性成本。大多數情況下,這種微型優化不值得提升性能。
據Oracle,
布爾:...此數據類型代表一個比特的信息,但其 「大小」不是唯一的精確定義的東西。
1
是的,布爾值只能使用1位。但更重要的是,它讓另一位開發人員閱讀代碼時更清楚,只有兩種可能的狀態。
1
答案取決於您的JVM和您的代碼。唯一可以確定的方法是通過分析您的實際代碼。
2
給你一個想法,我曾經在一家小型商店(16位機器)諮詢過。
有時候人們會有一個「標誌字」,一個包含16個布爾標誌的全局int空間。
這是爲了節省空間。
不要緊,測試一個標誌需要兩個16位指令,並設置一個標誌需要三個或更多。
+1
「一分錢一英鎊愚蠢」的好例子! – 2012-02-11 02:02:41
1
如果您只有2個狀態要表示,並且想要減少內存使用量,則可以使用java.util.BitSet
。
1
只有大多數JVM使用與字節相同數量的空間布爾值。訪問一個字節/布爾值可以比訪問一個int或long更多,所以如果性能是唯一的考慮因素,int或long可以更快。當你在線程之間共享一個值時,在整個字段中保留一個完整的高速緩存行(在極端情況下)可能是有利的。在許多CPU上,這是64字節。
相關問題
- 1. Java byte to int
- 2. 代替布爾值的使用INT標誌
- 3. 使用INT VS布爾
- 4. 如何將布爾代碼更改爲java中的int代碼
- 5. JAXB編譯器綁定xs:布爾到Java布爾代替布爾包裝類
- 6. JSON值1或0 - int或布爾值
- 7. Java byte to int強制
- 8. 替代MySQL表中的布爾標誌?
- 9. 如何int或布爾以checkState
- 10. Java中的byte,char,int - 位表示
- 11. Java:不兼容類型(int /布爾值)
- 12. 使用CellRenderer代替布爾值的JTabel列中的複選框
- 13. 使用布爾變量代替ActionListner接口在揮杆
- 14. 用int代替TextBox
- 15. RandomAccessFileOrArray的替代方法(byte [])
- 16. int *是如何在C#中布爾?
- 17. 使用什麼:布爾變量替代或空值真/假識別
- 18. C#int to byte []
- 19. 我該如何在布爾中使用int命令呢?
- 20. 使用Java在MongoDB中存儲byte []
- 21. java:布爾instanceOf布爾?
- 22. 在Java中使用流的byte []到byte []的ArrayList
- 23. Hibernate的JPA,MySQL和TINYINT(1)布爾代替位或字符
- 24. mysqli_fetch_array問題 - 布爾代替mysqli_result
- 25. 替代大量的MySQL布爾值?
- 26. AngularJS 2 ZoneAwarePromise代替一個布爾值
- 27. 替代在java中使用TreeSet?
- 28. 從Int到Byte的轉換問題(Java)
- 29. 爲什麼在java中將`char`轉換爲`int`而不是`short`或`byte`?
- 30. ionic2離子複選框 - 使用整數代替布爾值
[布爾](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) - 這個數據類型代表一個信息位,但它的「大小」不是精確定義。 – paislee 2012-02-09 18:20:24
這種數據類型代表了一點信息,但其「大小」並不是精確定義的。 – 2012-02-09 18:20:30
這可能但它沒有。有沒有提供JVM使用空間優化的一些優化? – 2012-02-09 18:20:41