Использование логического вместо байта или int в Java - PullRequest
0 голосов
/ 09 февраля 2012

Используется ли boolean вместо byte (если мне нужно 2 состояния) в Java, полезно для производительности или это просто иллюзия ... Вся космическая прибыль нивелируется выравниванием?

Ответы [ 6 ]

4 голосов
/ 09 февраля 2012

Вы должны использовать то, что яснее, если только вы не профилировали свой код и не решили, что выполнение этой оптимизации стоит затрат на удобочитаемость.В большинстве случаев подобная микрооптимизация не стоит увеличения производительности.

Согласно Oracle ,

, логическое значение: ... ЭтоТип данных представляет один бит информации, но его «размер» не является чем-то точно определенным.

2 голосов
/ 09 февраля 2012

Чтобы дать вам идею, я однажды проконсультировался в мини-магазине (16-битные машины).

Иногда у людей было бы «слово-флаг», глобальное целое, содержащее пространство для 16 логических флагов.

Это было для экономии места.

Не берите в голову, что для проверки флага требуются две 16-битные инструкции, а для установки флага требуется три или более.

1 голос
/ 10 февраля 2012

Только большинство JVM, логическое значение, использует тот же объем пространства, что и байт. Доступ к байту / логическому значению может быть более трудоемким, чем доступ к int или long, поэтому, если производительность является единственным фактором, int или long могут быть быстрее. Когда вы разделяете значение между потоками, может быть преимуществом резервирование всей строки кэша в поле (в наиболее экстремальных случаях). Во многих процессорах это 64 байта.

1 голос
/ 09 февраля 2012

Если у вас есть только 2 состояния, которые вы хотите представить, и вы хотите уменьшить использование памяти, вы можете использовать java.util.BitSet.

1 голос
/ 09 февраля 2012

Ответ зависит от вашей JVM и вашего кода.Единственный способ узнать наверняка - это профилировать ваш реальный код.

1 голос
/ 09 февраля 2012

Да, логическое значение может использовать только 1 бит.Но что еще более важно, для другого разработчика, читающего ваш код, становится понятнее, что существует только два возможных состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...