Человек-Даук
с проверкой
Человек-Даук
реально нахуй не сдалась
Человек-Даук
не
Человек-Даук
блок питания фонит
Человек-Даук
раз
Человек-Даук
генератор фонит,два
Человек-Даук
но там такая мощность
Человек-Даук
что розетка ужаснее
Человек-Даук
поставь нормальный инвертор
Человек-Даук
чтоб не мигал как онанист
Человек-Даук
и развертку пошустрее сделай
Человек-Даук
чаще спи
Человек-Даук
лей визин в глаза
🦥Alex Fails
Я еще раз говорю, что беседы должны быть по теме чата. Для флуда и оффтопов до хрена есть других чатов
например, этот: @flood
Dmitry
есть задача на хайлоад
Dmitry
подскажите самое эффективное решение
Dmitry
есть строка, нужно проверить, обрабатывали ли мы её ранее
Человек-Даук
Человек-Даук
Dmitry
ну грубо говоря строка задана адресом в памяти и её длиной. длина непостоянна
Человек-Даук
Dmitry
нет
Dmitry
мы проверяем последовательно
Человек-Даук
хорошо, в строку добавить один бит можно ?
Dmitry
ну нам не по адресам сверять нужно, а по содержимому. можно, но к чему ты клонишь?
Человек-Даук
Dmitry
ну собственно да
Человек-Даук
дело в том, что в кэш памяти есть бит перезаписи
Человек-Даук
dirty bit
Человек-Даук
когда он есть:можно переписывать
Человек-Даук
тогда ты можешь считать номера строк
Человек-Даук
и ставить бит
Dmitry
это я понимаю, но тут задача алгоритмическая
Человек-Даук
Dmitry
номера строк?
Человек-Даук
номера строк?
ну ты хочешь сверить по содержимому прям точно очень ?
Пример можно ?
Dmitry
да, прямо точно очень
Dmitry
ну давай я тебе простой пример накатаю
Dmitry
чтобы объяснить
Dmitry
имеется большой буфер, например
"abcdefergr6566trhjrehiroejhtri554gjhithgjrt6566gjhitrhtrjih67676ghrjthijrt2234"
Dmitry
мы его последовательно парсим, если встречается последовательность цифр - мы её сохраняем, отправляем куда надо, и идём дальше
Dmitry
далее. если впоследствии встретилась последовательность цифр, которая уже БЫЛА - её сохранять и отправлять не надо.
Dmitry
вот и вся задача.
Dmitry
да на чем угодно. в общем виде
Человек-Даук
Dmitry
ну вот я и говорю, подскажите НАИБОЛЕЕ эффективное решение
Dmitry
да, по сути я это вижу как хеш-таблицу со значением 1 бит
Dmitry
ключ - например CRC32 от последовательности
Dmitry
а значение - 1 бит
Человек-Даук
Человек-Даук
Человек-Даук
можно еще быстрее
Dmitry
хорошо, объясни подробнее. вот я считал 6566. что я делаю?
Человек-Даук
Человек-Даук
самому
Человек-Даук
чисто хэш таблицу
Человек-Даук
ты рамкидаешь значение
Dmitry
да я понимаю, я в любом случае буду сам реализовывать
Человек-Даук
в определенным случае
Человек-Даук
очень маленький шанс рассогласования
Человек-Даук
по таблице
Человек-Даук
но это будет быстро,потому что по сути это распихивание строк
Dmitry
вообще, если на псевдокоде
while( TRUE )
{
str = parse(buf);
if(get_cached(str) == 0)
{
set_cached(str);
// do something with str
}
}
Dmitry
собственно интересует реализация get_cached и set_cached
Dmitry
понятное дело, что сам, что хеш-таблицу, меня детали интересуют, какой лучше алгоритм и так далее
Dmitry
ты говоришь об общей идее, которую я и так себе представляю
Dmitry
я же о деталях реализации
Dmitry
плюс, повторяю, в значении у меня 1 бит, т.е. нет нужды привязывать произвольное значение
Dmitry
чисто наличие/отсутствие
Dmitry
классическая хеш-таблица это все-таки произвольный ключ -> произвольное значение
Человек-Даук
Человек-Даук
?
Человек-Даук
на худой конец ты просто можешь посчитать количество тех или иных цифр
Dmitry
да будет, будет. я к тому, что мне нужно set, а не map - т.е. может, здесь можно как-то выиграть в производительности
Человек-Даук
Человек-Даук
каждое новое значение сохранять
Человек-Даук
а потом тупо сколько раз встретилось
Dmitry
как иначе? ну, битовая карта, например, но там либо большая битовая карта, либо много коллизий :)
Человек-Даук
иначе у меня уже нет идей