powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Массив примитивов большого размера
25 сообщений из 25, страница 1 из 1
Массив примитивов большого размера
    #40108892
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Подскажите, есть ли библиотека (возможно с использованием dll-библиотеки) для создание и работы с массивами примитивов размером в unsignet int max value. А, также, с работой int, как unsignet int. Без ущерба производительности.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40108896
А от чего ожидается ущерб производительности если работать без библиотеки? И как будет выглядеть работа с unsinged int - эта библиотека произвела какие-то вычисления (арифметика, условия?) и сама записала куда-то?

Ну и что такое большой массив - миллиарды значений?
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40108907
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unsigned int == 2^32
Умножаем на размер (пока) максимального примитива Java и получаем 32 ГБ адресного пространства, доступного "одним куском".
Вы точно уверены, что что вам это надо и вообще не готовы идти на компромисы?

P.S.
Массивы в Java - "объекты первого класса": их создаёт JVM и ради вас никто не будет переписывать спецификацию виртуальной Java-машины. И не было бы неплохо знать о таких вещах априори. До написания малоосмысленных сообщений.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109000
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разложи свои массивы в два java-массива с "хвостиком". Думаю формулу доступа сам придумаешь. Не сложно.

Вообще постановка тяготеет к какому-то cloud-computing на примитивах. Иначе мне сложно себе представить зачем нужно
столько примитивов в одну секунду и на одном хосте.

Чтоб не решать "проблему XY" хотелось-бы узнать реальную постановку задачи. Возможно она решается на Spark/Hive e.t.c.

А память надо экономить для более нужных дел.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109039
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть библиотеки коллекций (т.е. не совсем массив) для хранения атомарных типов (без боксинга).

Есть no-sql (никакую конкретно рекомендовать не могу, т.к. то, что смотрел бесплатное мне не понравилось даже по описаниям) или embidded базы (например SQL Lite), скорость работы которых вполне неплохая (на простых точечных запросах минимум на один-два порядка быстрее обычных БД)

Ну и термин "без ущерба производительности" не очень понятен. Производительность поиска (в массиве?), производительность сборщика мусора, производительность OS и так далее. Какой именно "производительности" Вам не хватает в чем заключается ущерб - не ясно совершенно.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109040
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://fastutil.di.unimi.it/

fastutil extends the Java™ Collections Framework by providing type-specific maps, sets, lists and queues with a small memory footprint and fast access and insertion; provides also big (64-bit) arrays, sets and lists, and fast, practical I/O classes for binary and text files. It is free software distributed under the Apache License 2.0.

The classes implement their standard counterpart interface (e.g., Map for maps) and can be plugged into existing code. Moreover, they provide additional features (such as bidirectional iterators) that are not available in the standard classes.

Besides objects and primitive types, fastutil classes provide support for references, that is, objects that are compared using the equality operator rather than the equals() method.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109043
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Проще говоря: нужен функционал массивов на подобии, как в С. Тоесть размер массива байтов не ограничивается 2в 31 степени. И индексируется unsignet int. Тоесть 4294967295 элементов. Возможно есть готовая быблиотка , с библиотекой С (dll), которая будет работать должным образом без преобразования интерпретации 32-т бит с int в unsignet int. Тем более, что размер массива java не 2*31, а на 5 позиций меньше.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109047
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
https://fastutil.di.unimi.it/

fastutil extends the Java™ Collections Framework by providing type-specific maps, sets, lists and queues with a small memory footprint and fast access and insertion; provides also big (64-bit) arrays, sets and lists, and fast, practical I/O classes for binary and text files. It is free software distributed under the Apache License 2.0.

The classes implement their standard counterpart interface (e.g., Map for maps) and can be plugged into existing code. Moreover, they provide additional features (such as bidirectional iterators) that are not available in the standard classes.

Besides objects and primitive types, fastutil classes provide support for references, that is, objects that are compared using the equality operator rather than the equals() method.

Это, возможно то, что нужно. Пробую. Спасибо.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109051
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg

...И индексируется unsignet int. Тоесть 4294967295 элементов...

Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут.

Вместо одного массива на 4294967296 элементов, 4 по 1073741824

p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом )))
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109055
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/BigArrays.html

Introducing big arrays

A big array is an array-of-arrays representation of an array. The length of a big array is bounded by SEGMENT_SIZE * Integer.MAX_VALUE = 134217728 * (231 − 1) rather than Integer.MAX_VALUE. The type of a big array is that of an array-of-arrays, so a big array of integers is of type int[][]. Note that SEGMENT_SIZE has been chosen so that a single segment is smaller than 231 bytes independently of the data type. It might be enlarged in the future.

.......
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109057
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Lemkoleg

...И индексируется unsignet int. Тоесть 4294967295 элементов...

Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут.

Вместо одного массива на 4294967296 элементов, 4 по 1073741824

p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом )))

Зделать можно все, что угодно. Но, доступ к элементам массива не будет по скалярному числу. Каджый доступ потребует дополнительное преобразование ( вычитание) , для получения номера элемента к конкретному из массивом. Вот вам и дополнительные расходы на производительность.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109063
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg
Leonid Kudryavtsev
пропущено...

Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут.

Вместо одного массива на 4294967296 элементов, 4 по 1073741824

p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом )))

Зделать можно все, что угодно. Но, доступ к элементам массива не будет по скалярному числу. Каджый доступ потребует дополнительное преобразование ( вычитание) , для получения номера элемента к конкретному из массивом. Вот вам и дополнительные расходы на производительность.

Я готов спорить на виски, что для твоей бизнес-задачи (если она конечно есть) - этот пункт не будет
иметь большого значения. Нагрузку обычно создаёт бизнес задача а не обще-системная утилита-коллекций.

А если тебя беспокоит condition и вычитаение - вот тебе идея без вычитания. Используй битовые
операции для расчета селектора и массива.

Кстати задачка на 0.5 story point и пока мы чятимся - уже можно было написать шаблон реализации для
почти всех примитивов. Далее - просто копи-паста.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109068
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наложение маски или вычитание на современных процессорах выполняется быстрее такта. (несколько ALU команд за один такт). Доступ к памяти от десятков тактов до полусотни.

Т.е. дополнительные расходы на производительность - максимум единицы процентов.

Прошли те времена, когда программисты ради производительности переменные называли не больше 1-4 букв и начальные пробелы (отступы) в начале строк с командами удаляли.

p.s.
Т.к. java компилятор, то удаление отступов в начале строк с командами не поможет. А вот на названиях переменных, классов, ф-ций - память все равно сэкономить можно!

Название переменных и функций делайте максимум в пару букв (разумеется, от излишеств в виде get/set в начале методов тем более нужно отказаться!). Экономия памяти - лучше работает кэш - быстрее выполняется программа - профит.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109070
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
32 гиг хип?фига вы ребята круты
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109071
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор задачу не рассказал
т.ч. все на его совести

ну а сервера с >= 256 Gb оперативки уже давно не редкость
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109083
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар, ну вы жжете)
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109100
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
автор задачу не рассказал
т.ч. все на его совести

ну а сервера с >= 256 Gb оперативки уже давно не редкость

понятно что не редкость,так как щас все облако- сколько за такое удовльствие платить придется
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных.
Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите
так-же. Разумеется потребуется напряжение мозговой извилины чтобы перенести архитектуру задачи в Hadoop/Spark
но результат будет по крайней мере рациональный по сравнению с "купить железо на 32 Гига (ага 32 это только начало
в реальности по формулам расчета Java memory надо еще чуть больше) и авось оно как-то решит супер задачу".
Что за задача кст? Анализ генома саблезубой мыши?
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109152
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
ну а сервера с >= 256 Gb оперативки уже давно не редкость
Azul лет этак восемь назад "хвастался", что его "могучий Zing" работает с кучей в 4ТБ. У Шипилёва есть пример (Shenandoa) для кучи в полтора терабайта.
Поэтому вопрос не в размерах, как таковых. Вопрос, как обычно - в осмысленности хотелки.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109153
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных.
Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите
так-же.
Год работаете, два, а потом понимаете, что за сравнимые деньги можно было взять в лизинг пару серверов и вообще "не морщить мозг".

P.S.
Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"?
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109154
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov
mayton
Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных.
Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите
так-же.
Год работаете, два, а потом понимаете, что за сравнимые деньги можно было взять в лизинг пару серверов и вообще "не морщить мозг".

P.S.
Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"?

а зачем брать сервера в лизинг если можно облаком воспользоваться и взять нужные те количество ядер и озу с памятью
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109156
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
облака хороши до поры до времени, а как это время наступит - так цена за свой собственный сервер поеажется дармовой.
если конечно маски-шоу не страшны.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109160
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервера можно и за бугром держать. Особенно если потребители-клиенты так же забугорные.

Насколько знаю, есть крупные компании, которые жили (как минимум в прошедшем времени) на AWS EC2, арендовали _сотни_ инстансов под продакшен и считали это нормальным (по деньгам).

Потом правда продакшен перенесли на свои сервера в свои серверные (3 серверные, 2 в США, 1 в Европе), но AWS EC2 все равно остался как минимум (может были и другое использование) под тестовые задачи (запустили инстанс, прогнали тесты, выключили).
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109163
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных.
Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите
так-же.
Год работаете, два, а потом понимаете, что за сравнимые деньги можно было взять в лизинг пару серверов и вообще "не морщить мозг".

P.S.
Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"?

Лично я-бы имел свой собственный сервер. Просто из инженерного интереса. Но я понимаю
почему современный бизнес отказывается именно от покупки собсвтенно железа.
Тоесть то что я лично думаю в этом топике может противоречить тому что надо делать.

Как в анекдоте про Рабиновича.
...
Рейтинг: 0 / 0
Массив примитивов большого размера
    #40109178
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080
а зачем брать сервера в лизинг если можно облаком воспользоваться и взять нужные те количество ядер и озу с памятью
А это считать надо.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Массив примитивов большого размера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]