Size: a a a

2021 January 15

NT

Nikita Tsukanov in pro.net
Aloraman
А по этим 80 гигам можно несколько раз пробежать?
Прочитать первый раз, набрать статистику сколько раз какой префикс 1-2 байта встречается, зааллоцировать 256/65536 массивов под них и заполнить, прочитав  второй раз? Потом параллельно просортировать
Правда тут уж недалеко и до написания своего B+/B*, проще сразу в натив уходить
встречаются равномерно
источник

NT

Nikita Tsukanov in pro.net
в смысле криптографически равномерно
источник

NT

Nikita Tsukanov in pro.net
16-байтные префиксы сгенерированы крипторандомом
источник

NT

Nikita Tsukanov in pro.net
(на самом деле нет, но обладают теми же свойствами)
источник

A

Aloraman in pro.net
То бишь в среднем выйдет 256 массивов по 4 ляма элементов например
Правда заполнение пойдет медленное поди
источник

A

Aloraman in pro.net
Это если из этих 16 байт взять старший байт и раскидать по бакетам. Порядок бакетов выйдет отсортированный, внутри бакета стандартный Array.Sort справится
источник

VZ

Vlad Zaa in pro.net
Про nanoframework кто-нибудь слышал?
https://twitter.com/dotnetfdn/status/1349729487500369920?s=21
источник

G

George in pro.net
Aloraman
А по этим 80 гигам можно несколько раз пробежать?
Прочитать первый раз, набрать статистику сколько раз какой префикс 1-2 байта встречается, зааллоцировать 256/65536 массивов под них и заполнить, прочитав  второй раз? Потом параллельно просортировать
Правда тут уж недалеко и до написания своего B+/B*, проще сразу в натив уходить
Вот это самый годный метод, к тому же масштабируемый хорошо. Ждал, когда кто-то додумается. Поскольку там хорошее распределение (как у рандома), то не нужно два раза бегать. Просто аллоцируем списки сразу с капасити среднестатистическим, а потом перегруженные сами вырастут, это делается за амортизированную константу по времени. Поскольку списки теперь можно делать маленькие, то все будет хорошо с точки зрения хипа (не обязательно класть в LOH). Заодно можно сортировать параллельно, и любым алгоритмом (не обязательно cache-friendly), потому что списки маленькие, и целиком могут влезать в кеш.
источник

NT

Nikita Tsukanov in pro.net
да, но списков не больше 256
источник

NT

Nikita Tsukanov in pro.net
хотя для 80гб хватит
источник

NT

Nikita Tsukanov in pro.net
хотя нет
источник

NT

Nikita Tsukanov in pro.net
хуёвое решение
источник

NT

Nikita Tsukanov in pro.net
знаете почему?
источник

NT

Nikita Tsukanov in pro.net
памяти надо не 80 гб, а 160
источник

A

Aloraman in pro.net
А исходные 80 в памяти обязательно нужно держать?
источник

AT

Alexey Tkachenko in pro.net
Nikita Tsukanov
памяти надо не 80 гб, а 160
Не удивлюсь если есть дополнительное требование держать их запинеными в физической памяти, чтобы не свопились из соображения безопасности
источник

Dv

Dr. Friedrich von Ne... in pro.net
EgorBo
@kekekeks вообще ил опкоды для лонговых индексов есть
Мы все тут знаем, как они работают.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Вместе с Array.LongLength.
источник

Dv

Dr. Friedrich von Ne... in pro.net
О, это вместо Micro Framework?
источник

E

EgorBo in pro.net
источник