Практические советы по реализации систем извлечения информации

воскресенье, ноября 26, 2006

Как хранить double

Задался вчера интересным вопросом, как экономнее всего хранить числа с плавающей точкой. Понятно, что выиграют примитивы, интересно было сравнить double[] (массив из одного элемента) и Double. Результат для меня был неожиданный: double/Double/double[] = 1/2/3. Получается, что в контейнерах эффективнее хранить класс-обертку, а не массив. Если же можно использовать массивы вместо контейнеров, лучше использовать массивы: выигрыш в памяти составит более 100%!

5 комментариев:

LB комментирует...

Йех... рано-рано еще списывать С++ со счетов. В С++ можно сделать массив и шаблон из любого типа. Соответственно при этом достигается максимальная эффективность и экономия памяти.

krondix комментирует...

Да, это точно.

А вот тут товарищи как следует перемывают косточки все этой дурацкой системе в Java.

Анонимный комментирует...

>Результат для меня был неожиданный

Если бы Вы задумались над тем, что массив в Java это тоже объект, то результат неожиданным Вам не показался бы.

krondix комментирует...

Согласен, я об этом задумался уже после, чтобы объяснить результат.

Alexey Efimov комментирует...

>массив в Java это тоже объект
Это не верно. В JVM живет три сущности - примитивы, массивы и Objectы. Массив, конечно можно кастить к Object, но это скорей грабля JVM. Нет у массива методов Object. Есть свои.