|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
есть какие-то ограничения в практическом применении векторов? если вектор вырастет до триллиона структур и будет постоянно висеть в памяти, есть ли какие-то риски? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 14:46 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Хочу выделить не менее терабайта памяти. Не идиот ли я??? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 14:48 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза есть какие-то ограничения в практическом применении векторов? Для x64 нет. В x86 примерно 1.7 Гб потолок. Алексей Роза если вектор вырастет до триллиона структур и будет постоянно висеть в памяти, есть ли какие-то риски? Память кончится - ОС закроет прогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 14:52 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза, Самое время вторым постом написать for.... Триллион. И посмотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 15:05 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза, а что в вектор будете складывать, просто из любопытства ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 15:23 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Dima T Для x64 нет. В x86 примерно 1.7 Гб потолок. не ну это понятно. Конечно про x64 речь. вопрос в сохранности, констистенции и скорости обработки... mini.weblab Алексей Роза, а что в вектор будете складывать, просто из любопытства ? инты, строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 15:39 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза инты, строки. Практически исключено что такой объем данных нужен одновременно. Поэтому вам нужна СУБД, postgresql там какой-нибудь, которая умеет хорошо работать с выборками данных из набора не помещающегося в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 15:43 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:09 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. Реализовывайте свой алгоритм кеширования и подгрузки с диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:13 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. Это основное назначение субд. А вы говорите не умеют))) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:18 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:19 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске Стебелек умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:34 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, Файл на диске умеет. Он же ничего не сказал о запросах к данным))))) о целостности данных, о транзакционности... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 16:57 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза есть какие-то ограничения в практическом применении векторов? если вектор вырастет до триллиона структур и будет постоянно висеть в памяти, есть ли какие-то риски? Что такое триллион? 10^6 - это миллион 10^9 - это миллард 10^12 - это триллион Если грубо - то это приставка тера-*. Тоесть если-бы структура была байтом - то мы-бы грубо выделили 1 терабайт. Мне кажется вопрос упирается в действия ОС во время операции malloc(). Что она будет делать? Тут наверное Windows/Linux будут идти по разной стратегии. И какие будут ограничения на фактическую оперативку. Возможно при таком объеме стоит посмотреть в memory-mapped API. Consern такой. Даже если ты аллоцируешь 1 теребайт оперативы то вряд-ли ты в единый миг сможешь ее использовать. Технически - я думаю это возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 17:33 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Файл на диске умеет. Я всерьез не собирался обсуждать его заявление. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 17:39 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
По поводу того что у нас не malloc а vector. Здесь есть нюансы. Я думаю имеет смысл делать предварительное резервирование структур в штуках в конструкторе https://en.cppreference.com/w/cpp/container/vector/vector Потому-что динамический resize может быть расточительным в нашем кейсе. Возможно в какой-то момент мы затребуем даже больше чем 1 Тера-количество элементов. Сколько там он? В 1.5 или 1.2 или 2 раза? Я не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 17:49 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. Это основное назначение субд. А вы говорите не умеют))) основное назначение СУБД - сохранность и поиск данных. скорость - НЕ основное. Вот транзакции - да. Чтобы найти рандомную, незакешированную строчку среди миллиардов, уйдёт несколько секунд. Anatoly Moskovsky Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске Стебелек умеет. чего он умеет? Все они одинаковые. Даже редиска под нагрузкой сдувается. Да и без нагрузки херня неэффективная. mayton Я думаю имеет смысл делать предварительное резервирование структур в штуках в конструкторе ну это само собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 18:03 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза Чтобы найти рандомную, незакешированную строчку среди миллиардов, уйдёт несколько секунд. При кривых руках админа, вполне возможно )) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 18:27 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза основное назначение СУБД - сохранность и поиск данных. скорость - НЕ основное. Вот транзакции - да. Чтобы найти рандомную, незакешированную строчку среди миллиардов, уйдёт несколько секунд. Расскажи что у тебя лежит внутри этих структур. И может тебе надо не vector а какую-то другую структуру данных для поиска. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 19:05 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Интересно для чего может понадобиться такая задача? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 19:12 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
petrav Алексей Роза ни одна СУБД не умеет хорошо работать с данными, которые лежат на диске да и когда в памяти миллиард строк, тоже тупит. Реализовывайте свой алгоритм кеширования и подгрузки с диска. Давайте эксперимент. Возьмем бесплатную DBMS (PG/MySQL). Создатим табличку. С 1 полем типа Int. Проиндексируем ее по этому полю. Загрузим миллиард чисел. Последовательность. Имеем предварительно знание что любой индекс баз данных класса B+Tree имее 3-4 уровня блоков. Тоесть максимум за 4 дисковых операции он находит нужный ключ. Для старого магнитного диска типа HDD время поиска любого сектора занимает в среднем 6 милисекунд. (я промерял аж 5 своих SATA дисков и эти цифры правда такие. Я гарантирую.). Тоесть любой ключ в этой таблице мы найдем за 6 * 4 = 24 милисекунды. Это на старом жлобском магнином диске. Ну для твердотельных там будут цифры получше. И этот весь эксперимент не требует тера-штучного вектора. Обычная база типа Postgres/MySQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 19:17 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Реализовывайте свой алгоритм кеширования и подгрузки с диска. Давайте эксперимент. Возьмем бесплатную DBMS (PG/MySQL). Создатим табличку. С 1 полем типа Int. Проиндексируем ее по этому полю. Загрузим миллиард чисел. Мы не знаем какие у автора требования. Чисто теоретически, написав узкоспециализированный алгоритм, своё кеширование (обойдя кеширование ОС), наверное, можно обогнать универсальную БД. Особенно если у нас очень "необычный" алгоритм работы с данными. Но чисто практически, свой алгоритм кеширования, я думаю, может по сложности неожиданно потянуть на докторскую диссертацию из какой-нибудь аля теории множеств. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 20:00 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Я так всегда делаю. В спорных технических вопросах даю готовое коробочное решение с цифрами. Пускай даже прямое и деревянное. И дальше уже автор пускай обосновывает почему ему это решение не подходит. И уже с цифрами. На самом деле кеши поверх БД тоже строят. Вот сбербанк не просто построил а разработал целый программный продукт в виде грида кешей и уже продает его отдельно. Но там - тоже свои сложности. С invalidation. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 20:07 |
|
vector на триллион объектов
|
|||
---|---|---|---|
#18+
Алексей Роза, >Чтобы найти рандомную, незакешированную строчку среди миллиардов, уйдёт несколько секунд. По ключу? МИКРОсекунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 21:18 |
|
|
start [/forum/moderation_log.php?user_name=skart]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 24987ms |
total: | 25308ms |
0 / 0 |