2012-02-09 21 views

回答

4

除非您已經對您的代碼進行了剖析,否則您應該使用哪一個更清楚,並確定進行此優化是值得的可讀性成本。大多數情況下,這種微型優化不值得提升性能。

Oracle

布爾:...此數據類型代表一個比特的信息,但其 「大小」不是唯一的精確定義的東西。

1

是的,布爾值只能使用1位。但更重要的是,它讓另一位開發人員閱讀代碼時更清楚,只有兩種可能的狀態。

+3

[布爾](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) - 這個數據類型代表一個信息位,但它的「大小」不是精確定義。 – paislee 2012-02-09 18:20:24

+1

這種數據類型代表了一點信息,但其「大小」並不是精確定義的。 – 2012-02-09 18:20:30

+0

這可能但它沒有。有沒有提供JVM使用空間優化的一些優化? – 2012-02-09 18:20:41

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字節。