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

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

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

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

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

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

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

Ну и термин "без ущерба производительности" не очень понятен. Производительность поиска (в массиве?), производительность сборщика мусора, производительность OS и так далее. Какой именно "производительности" Вам не хватает в чем заключается ущерб - не ясно совершенно.
...
Рейтинг: 0 / 0
03.11.2021, 17:52
    #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
03.11.2021, 17:55
    #40109043
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив примитивов большого размера
Leonid Kudryavtsev,
Проще говоря: нужен функционал массивов на подобии, как в С. Тоесть размер массива байтов не ограничивается 2в 31 степени. И индексируется unsignet int. Тоесть 4294967295 элементов. Возможно есть готовая быблиотка , с библиотекой С (dll), которая будет работать должным образом без преобразования интерпретации 32-т бит с int в unsignet int. Тем более, что размер массива java не 2*31, а на 5 позиций меньше.
...
Рейтинг: 0 / 0
03.11.2021, 17:57
    #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
03.11.2021, 18:01
    #40109051
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив примитивов большого размера
Lemkoleg

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

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

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

p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом )))
...
Рейтинг: 0 / 0
03.11.2021, 18:11
    #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
03.11.2021, 18:24
    #40109057
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив примитивов большого размера
Leonid Kudryavtsev
Lemkoleg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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