Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Вклады
                Проект JUnion

Проект JUnion

Опубликованно: 29.05.2018, 19:45
Последняя редакция, Andry: 30.05.2018 21:43

(Дополнительная информация доступна на веб-сайте этого проекта)

drawing

Предоставляет типы структур для языка программирования Java.

При создании int массивов мы имеем два основных варианта:

int[] intArray = new int[1000];  
Integer[] intBoxedArray = new Integer[1000];

Сколько байтов используют intArray, intBoxedArray для хранения 1000 int-ов?

intArray 4016 bytes 4*1000 + ~16(около 16 байт для заголовка массива) 
intBoxedArray 20016 bytes (4 + ~12 + ~4)*1000 + ~16 (точное число зависит от VM)

Это почти в 5 раз больше!
Ну, это учит нас отдавать предпочтение примитивным массивам, а не их версиям оболочкам.
Так о чем этот проект?

Рассмотрим

class Point { float x,y;}
Point[] arr = new Point[500];

arr возьмёт 14016 байт
Данные состоящие из 500 point, по 2 float, поэтому 4000 байт должно быть достаточно.
Если Point это структура, то arr возьмёт ~4000 байт.

Разве было бы неплохо иметь возможность создавать типы структур в Java, такие как класс и работающие как структуры?

С JUnion вы можете сделать это, отметив класс с помощью аннотации @Struct!

Создадим структуру Vec3:

@Struct
public class Vec3 {
    public float x,y,z;
}

Далее вы можете использовать его так:

//Создадим новый массив структур
Vec3[] arr = Vec3[10];
arr[5].x = 10;
Vec3 v = arr[5];
...
//
ByteBuffer a = ByteBuffer.allocateDirect(10*Mem.sizeOf(Vec3.class))
   .order(ByteOrder.nativeOrder());
//Измените Direct Native Bytebuffer как бы структуру
Vec3 arr = Mem.wrap(a);
arr[5].x = 10;
...

Список возможностей можно найти здесь.

Зачем использовать типы структур?

  • Типы структур используют меньше памяти.
  • Имейте производительность примитивных типов.
  • Позволяет задавать данные в direct native ByteBuffer-ах с синтаксисом как класс.

Тест производительности

testarrayperf75

Скачать

Ознакомьтесь с последней версией

и руководство по интеграции использованию/IDE.

Поддержка и пожертвования

Вы хотели бы поддержать JUnion? Вы можете сообщить об ошибках или просить здесь новые возможности или пообщаться здесь

Или вы хотите сделать пожертвование? Вы можете сделать это через PayPap

Смотрите так же:


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.