170 похожих чатов

Если ему положить тест из пары десятков строк с дублями

внутри - они их корректно отбрасывает?-

35 ответов

10 просмотров

v1 := crc32.ChecksumIEEE([]byte("ofslchic0687@aol.com:angels1")) v2 := crc32.ChecksumIEEE([]byte("chandler_underwood@yahoo.com:supersnow111")) fmt.Println(v1, v2) Вывод: 4124419246 4124419246

Web
v1 := crc32.ChecksumIEEE([]byte("ofslchic0687@aol....

я там выше вариант предлагал

Igor-Shekalev Автор вопроса
Web
v1 := crc32.ChecksumIEEE([]byte("ofslchic0687@aol....

Это судьба) Тогда так и map[uint64]struct{} соответственно : tab := crc64.MakeTable(crc64.ISO) v1 := crc64.Checksum([]byte("ofslchic0687@aol.com:angels1"), tab) v2 := crc64.Checksum([]byte("chandler_underwood@yahoo.com:supersnow111"), tab) fmt.Printf("%08X\n", v1) fmt.Printf("%08X\n", v2)

Igor Shekalev
Это судьба) Тогда так и map[uint64]struct{} соотве...

Приветствую. На 235 млн. просто зависает, нагрузка на ЦП 30%, память используется почти под завязку. Считываю файл по одному, думал что, из-за того, что открываю много соединений, т.к. файлов много, но все равно зависает. Возможно, что map[uint64]struct{} рехешится, хотя я и использую map[uint64]bool, но вряд ли это многое поменяет. Что посоветуете ?

Roman Timofeev
У вас 235 млн уникальных строк?

Да, map[uint64]bool отсеивает коллизии, а в []string я храню сами строки

Web
Да, map[uint64]bool отсеивает коллизии, а в []stri...

и они не жмутся, тем же deflate, например?

Roman Timofeev
и они не жмутся, тем же deflate, например?

Неа, не думал об этом, просто сырые строки

Igor-Shekalev Автор вопроса
Web
Да, map[uint64]bool отсеивает коллизии, а в []stri...

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

Web
Приветствую. На 235 млн. просто зависает, нагрузка...

Такое на Spark решается достаточно просто, и даже если памяти меньше чем данных, он сам сбросит на диск. Это конечно не Go, и скорее всего это будет медленнее чем аккуратная ручная реализации, но проще, и потом можно заскейлить на несколько серверов, одной строкой получить поддержку S3, или сделать дополнительные манипуляции со строками

Igor Shekalev
Зачем хранить строки? Это забивает память, после ч...

Да, я уже догадался вчера) Вроде записывает, но как-то странно ведёт себя программа, крашится иногда или просто зависает. Хотя бывает зависает, а бывает при бОльших объемах нормально

Igor-Shekalev Автор вопроса
Web
Да, я уже догадался вчера) Вроде записывает, но ка...

А что в краше пишет? У go очень вменяемая диагностика при панике по сравнению с другими языками.

Igor Shekalev
А что в краше пишет? У go очень вменяемая диагност...

Пока что не словил, как только через cmd открыл, то и вылетов не было 🤯

Igor-Shekalev Автор вопроса
Web
Пока что не словил, как только через cmd открыл, т...

А с коллизиями как? Не возникает на таком хеше?

Igor Shekalev
А с коллизиями как? Не возникает на таком хеше?

На 5млн точно нет, с большим кол-вом пока что не пробовал, как будет информация я напишу

Igor Shekalev
А с коллизиями как? Не возникает на таком хеше?

Коллизии пока что не проверял. Другими способами было 225млн. и дальше было очень медленно. С этим методом 425млн. и дальше идет медленно очень, как и раньше, но вот это число почти в два раза увеличилось. Из-за чего замедление может быть? Это из-за рехеширования мапы?

Web
Коллизии пока что не проверял. Другими способами б...

А что у вас в валуях мапы? Строка или структура?

Web
map[uint64]bool

Я думал может с гц чего, но в этом случае он должен скипать содержимое мапы

Igor-Shekalev Автор вопроса
Web
Коллизии пока что не проверял. Другими способами б...

Замедление из-за того, что мар стал очень большой, я не думаю что от этого можно избавиться без разработки альтернативных структур, заточенных специально под задачу. Например, использовать не 1 map, а слайс из 26 map, по первой букве строки. Тогда каждый будет в 10+ раз меньше и добавление в него на порядки быстрее. Но тут уж надо разбираться, что важнее - сложность алгоритма или время. У нас время не было критично, так как это часть большого процесса. Как часто оно будет запускаться?

Igor-Shekalev Автор вопроса
Web
Не часто будет запускаться

А сколько памяти оно на 425 млн сожрало? Я думаю, если скорость критична - стоит шардировать по первому символу строки или даже по паре. Выше написал как вариант.

Igor-Shekalev Автор вопроса
Web
12 ГБ вроде

Стоит попробовать шардировать, то есть сделать slice (даже array из 27 элементов, буквы + все остальное) из map и в каждый map класть только строки с этой буквы.

Igor Shekalev
Стоит попробовать шардировать, то есть сделать sli...

Да, в этом есть смысл, я уже пробовал, просто хз получится ли увеличить кол-во. Я попробую самые популярные библиотеки + этот метод и напишу

Igor-Shekalev Автор вопроса
Web
Да, в этом есть смысл, я уже пробовал, просто хз п...

Там 5 строк кода лишних, с этого точно стоит начать.

Igor-Shekalev Автор вопроса
Web
Где?

Разбить один map на 27 штук по первой букве.

Web
12 ГБ вроде

Я вам предлагал ключи пожать тем же deflate

Web
uint64 сжать ?

А что вы с коллизиями делаете?

Roman Timofeev
А что вы с коллизиями делаете?

Я беру строку "e" и делаю key = crc64.Checksum([]byte(e), data.tab) Потом проверяю значение этого key в мапе, если false(то есть уникальная строка), то я отправляю в запись в выходной файл и ставлю ключу, true в мапе

Похожие вопросы

Обсуждают сегодня

Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Друзья, за кем?
Magic
12
А шо, ты этой библиотекой пользуешься?
Darkanronpa Dark Hole
10
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
Или даже по-другому вопрос выстрою Есть ли вообще в electron'e для винды, возможность кнопки действий в нотификацию впихнуть ?
Андрей
7
приветы , подскажите что я не так сделал , почему у меня скрипт не работает в программе Revit ? ;Autohotkey_RU IfWinActive ("ahk_exe Revit.exe") ; только в открытом Revit Gu...
Anton Terentev
2
Hello friends, I have a question. I have a site written in HTML. This site has been ranking high on Google for about 10 years. I will change the hosting of the site and I will...
Ens
4
Карта сайта