2013-03-16 3 views
0

Так что прежде, чем было это:Преобразование булевый BitSet в Java

public static final boolean opaqueCubeLookup = new boolean[4096]; 

Но я узнал, что BitSet намного лучше в управлении памятью, поэтому я изменил его к этому:

public static final BitSet opaqueCubeLookup = new BitSet(4096); 

I также имел этот код:

opaqueCubeLookup[par1] = this.isOpaqueCube(); 

Но после переезда в BitSet у меня есть проблема, я получаю эту ошибку:

The type of the expression must be an array type but it resolved to BitSet 

Как это исправить? Любая помощь приветствуется!

+0

Обратите внимание, что в соответствии с [это] (http://stackoverflow.com/a/605451/2071828) SO ответить 'BitSet' значительно медленнее (4 раза). Качели и карусели? –

+0

@ bmorris591 Является ли 4096 объектов считающимися маленькими, потому что после некоторого тестирования он, кажется, имеет 2x меньше FPS, но занимает меньше процессора и памяти (я имею в виду, что оптимизированный кажется медленнее) – tambre

+0

В связанной нити контрольный пример выполнен с 1 миллионом пунктов, сообщение говорит, что производительность равна, когда это достигает 4 миллионов. Я думаю, это означает, что 4096 (очень) маленький ... –

ответ

4
opaqueCudeLookup.set(par1, this.isOpaqueCube()); 

См BitSet.html#set(int, boolean)

+0

Спасибо, это сработало! Должно повышать производительность моего приложения много! :) – tambre

+1

производительность @tambre, нет - она ​​будет медленнее. Объем памяти будет меньше. –

+0

@ bmorris591 Только что это заметил ... Черт! Я потратил более 1 часа на его конвертацию! – tambre

0

Использование:

opaqueCubeLookup.set(part1, this.isOpaqueCube()); 
Смежные вопросы