|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Доброго времени суток. Подскажите, есть ли библиотека (возможно с использованием dll-библиотеки) для создание и работы с массивами примитивов размером в unsignet int max value. А, также, с работой int, как unsignet int. Без ущерба производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 09:07 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
А от чего ожидается ущерб производительности если работать без библиотеки? И как будет выглядеть работа с unsinged int - эта библиотека произвела какие-то вычисления (арифметика, условия?) и сама записала куда-то? Ну и что такое большой массив - миллиарды значений? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 09:26 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
unsigned int == 2^32 Умножаем на размер (пока) максимального примитива Java и получаем 32 ГБ адресного пространства, доступного "одним куском". Вы точно уверены, что что вам это надо и вообще не готовы идти на компромисы? P.S. Массивы в Java - "объекты первого класса": их создаёт JVM и ради вас никто не будет переписывать спецификацию виртуальной Java-машины. И не было бы неплохо знать о таких вещах априори. До написания малоосмысленных сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 10:40 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Разложи свои массивы в два java-массива с "хвостиком". Думаю формулу доступа сам придумаешь. Не сложно. Вообще постановка тяготеет к какому-то cloud-computing на примитивах. Иначе мне сложно себе представить зачем нужно столько примитивов в одну секунду и на одном хосте. Чтоб не решать "проблему XY" хотелось-бы узнать реальную постановку задачи. Возможно она решается на Spark/Hive e.t.c. А память надо экономить для более нужных дел. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 16:17 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Есть библиотеки коллекций (т.е. не совсем массив) для хранения атомарных типов (без боксинга). Есть no-sql (никакую конкретно рекомендовать не могу, т.к. то, что смотрел бесплатное мне не понравилось даже по описаниям) или embidded базы (например SQL Lite), скорость работы которых вполне неплохая (на простых точечных запросах минимум на один-два порядка быстрее обычных БД) Ну и термин "без ущерба производительности" не очень понятен. Производительность поиска (в массиве?), производительность сборщика мусора, производительность OS и так далее. Какой именно "производительности" Вам не хватает в чем заключается ущерб - не ясно совершенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 17:46 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 17:52 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Проще говоря: нужен функционал массивов на подобии, как в С. Тоесть размер массива байтов не ограничивается 2в 31 степени. И индексируется unsignet int. Тоесть 4294967295 элементов. Возможно есть готовая быблиотка , с библиотекой С (dll), которая будет работать должным образом без преобразования интерпретации 32-т бит с int в unsignet int. Тем более, что размер массива java не 2*31, а на 5 позиций меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 17:55 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
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. Это, возможно то, что нужно. Пробую. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 17:57 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Lemkoleg ...И индексируется unsignet int. Тоесть 4294967295 элементов... Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут. Вместо одного массива на 4294967296 элементов, 4 по 1073741824 p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:01 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
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. ....... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:11 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Lemkoleg ...И индексируется unsignet int. Тоесть 4294967295 элементов... Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут. Вместо одного массива на 4294967296 элементов, 4 по 1073741824 p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом ))) Зделать можно все, что угодно. Но, доступ к элементам массива не будет по скалярному числу. Каджый доступ потребует дополнительное преобразование ( вычитание) , для получения номера элемента к конкретному из массивом. Вот вам и дополнительные расходы на производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:24 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Lemkoleg Leonid Kudryavtsev пропущено... Как уже верно сказал mayton, самостоятельно делается на коленках за 15 минут. Вместо одного массива на 4294967296 элементов, 4 по 1073741824 p.s. крайне странно, что у Вас степень двойки вдруг стала нечетным числом ))) Зделать можно все, что угодно. Но, доступ к элементам массива не будет по скалярному числу. Каджый доступ потребует дополнительное преобразование ( вычитание) , для получения номера элемента к конкретному из массивом. Вот вам и дополнительные расходы на производительность. Я готов спорить на виски, что для твоей бизнес-задачи (если она конечно есть) - этот пункт не будет иметь большого значения. Нагрузку обычно создаёт бизнес задача а не обще-системная утилита-коллекций. А если тебя беспокоит condition и вычитаение - вот тебе идея без вычитания. Используй битовые операции для расчета селектора и массива. Кстати задачка на 0.5 story point и пока мы чятимся - уже можно было написать шаблон реализации для почти всех примитивов. Далее - просто копи-паста. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:41 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Наложение маски или вычитание на современных процессорах выполняется быстрее такта. (несколько ALU команд за один такт). Доступ к памяти от десятков тактов до полусотни. Т.е. дополнительные расходы на производительность - максимум единицы процентов. Прошли те времена, когда программисты ради производительности переменные называли не больше 1-4 букв и начальные пробелы (отступы) в начале строк с командами удаляли. p.s. Т.к. java компилятор, то удаление отступов в начале строк с командами не поможет. А вот на названиях переменных, классов, ф-ций - память все равно сэкономить можно! Название переменных и функций делайте максимум в пару букв (разумеется, от излишеств в виде get/set в начале методов тем более нужно отказаться!). Экономия памяти - лучше работает кэш - быстрее выполняется программа - профит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:54 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
32 гиг хип?фига вы ребята круты ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 18:58 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
автор задачу не рассказал т.ч. все на его совести ну а сервера с >= 256 Gb оперативки уже давно не редкость ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 19:00 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Аффтар, ну вы жжете) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 20:12 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev автор задачу не рассказал т.ч. все на его совести ну а сервера с >= 256 Gb оперативки уже давно не редкость понятно что не редкость,так как щас все облако- сколько за такое удовльствие платить придется ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 21:36 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных. Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите так-же. Разумеется потребуется напряжение мозговой извилины чтобы перенести архитектуру задачи в Hadoop/Spark но результат будет по крайней мере рациональный по сравнению с "купить железо на 32 Гига (ага 32 это только начало в реальности по формулам расчета Java memory надо еще чуть больше) и авось оно как-то решит супер задачу". Что за задача кст? Анализ генома саблезубой мыши? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 23:21 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev ну а сервера с >= 256 Gb оперативки уже давно не редкость Поэтому вопрос не в размерах, как таковых. Вопрос, как обычно - в осмысленности хотелки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 09:44 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
mayton Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных. Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите так-же. P.S. Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 09:48 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных. Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите так-же. P.S. Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"? а зачем брать сервера в лизинг если можно облаком воспользоваться и взять нужные те количество ядер и озу с памятью ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 10:22 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
облака хороши до поры до времени, а как это время наступит - так цена за свой собственный сервер поеажется дармовой. если конечно маски-шоу не страшны. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 10:27 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Сервера можно и за бугром держать. Особенно если потребители-клиенты так же забугорные. Насколько знаю, есть крупные компании, которые жили (как минимум в прошедшем времени) на AWS EC2, арендовали _сотни_ инстансов под продакшен и считали это нормальным (по деньгам). Потом правда продакшен перенесли на свои сервера в свои серверные (3 серверные, 2 в США, 1 в Европе), но AWS EC2 все равно остался как минимум (может были и другое использование) под тестовые задачи (запустили инстанс, прогнали тесты, выключили). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 10:40 |
|
Массив примитивов большого размера
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Технологии AWS/EMR (Elastic Map Reduce) позволяют платить только за транзакции чтения больших данных. Это сильно отличается скажет от просто тупой покупки хостинга. Работаете в импульсном режиме - и платите так-же. P.S. Вы серьёзно думаете, что оплата пяти-шести киловатт в серверной сильно дороже кучки кондиционеров, чайников, персоналок и прочей офисной "требухи"? Лично я-бы имел свой собственный сервер. Просто из инженерного интереса. Но я понимаю почему современный бизнес отказывается именно от покупки собсвтенно железа. Тоесть то что я лично думаю в этом топике может противоречить тому что надо делать. Как в анекдоте про Рабиновича. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2021, 10:46 |
|
|
start [/forum/topic.php?fid=59&msg=40109112&tid=2120317]: |
0ms |
get settings: |
12ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
21ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
439ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 751ms |
0 / 0 |