Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
SiemarglУ меня такого файла нет. Выкладывай ссылки на входные данные. Хм.. Оказывается этот файл обновляется каждый день. Ищи который 114 Мб в архиве. Модератор: Ссылка удалена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 08:04 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Dima Tmaytonпод Windows10-x64/MinGW-6.4.0. Ты компилятор обновил? С++11 понимает? Помня что у тебя акторы не скомпилировались, не стал unordered_map и unordered_set использовать. Они немного побыстрее чем map и set. Не завязывайся на мой компиллятор. Делай лучшее решение. А я уж скомпиляю где-нибудь. Хоть на виртуалке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 08:18 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
maytonSiemarglУ меня такого файла нет. Выкладывай ссылки на входные данные. Хм.. Оказывается этот файл обновляется каждый день. Ищи который 114 Мб в архиве. Он сейчас 666Мб в архиве. Нужны стабильные данные. Кроме того, обещали строки до 64кб, а не охуллиард трехбуквенных паролей, которые хэшировать себе дороже. Модератор: Ссылка удалена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 09:33 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Стабильные это какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 09:52 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
maytonСтабильные это какие?Одинаковые для всех тестеров/участников ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 09:57 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Они одинаковые. Все алгоритмы я буду тестировать на всех наборах данных. По сути будет матрица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:01 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
SiemarglКроме того, обещали строки до 64кб, а не охуллиард трехбуквенных паролей Жестокий тест Если его ухудшить 20777122 то мой код тоже затупит и память жрать начнет. Поставил на закачку. Про макс.размер строки: у меня буфер 1024 байта для fgets(). Сколько поставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:03 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
maytonSiemarglУ меня такого файла нет. Выкладывай ссылки на входные данные. Хм.. Оказывается этот файл обновляется каждый день. Ищи который 114 Мб в архиве. Прогнал hashkiller-dict.txt. Код: plaintext 1. 2. 3. 4. Собственно записей 88 млн., меньше чем в ripe.db, но уникальных 59 млн., т.е. две трети. Модератор: Ссылка удалена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:16 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Ставте буфер строки в 64 к ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:22 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
ард трехбуквенных паролейдля 1-3(4) буквенных - битмап. заменить fgets() на fread(), сейчас смотрю-думаю считать crc вместе с поиском конца строки. Ну, и асинхронное чтение и многопоток как прикрутить. А деревья поиска можно вначале по длине строк разбить (заодно экономия в записи), и далее или по 8-битной сумме или по одному из байтов crc. И нужно доопределится с условиями задачи, RAM достаточно для crc+offset уникального набора или нет? (4G ~ 16 байт для каждой из не более чем 200М уникальных строк в наборе или необходимо реализовать промежуточную выгрузку на диск ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:27 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Зафиксировал. Можно запускать. Потестил на линуксе: есть небольшая проблема с биткартой, std::vector<bool> долго инициализируется. 4-5 сек. В MSVC быстро, правда при компиляции в DEBUG тоже тупит. Для начала запусти на маленьком файле, если будет тупить - значит биткарта. Что-то много претензий к vector<bool> уже накопилось, писал где-то самодельный, надо поискать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 15:11 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Наверное malloc + memset медленнее отработал. Спасибо Дима. Приду домой посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 19:17 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
maytonНаверное malloc + memset медленнее отработал. Спасибо Дима. Приду домой посмотрю. Я прверял под линуксом. malloc - не запрашивает память у ОС реальное выделение памяти процессу просходит при memset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 20:15 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
д0kХmaytonНаверное malloc + memset медленнее отработал. Спасибо Дима. Приду домой посмотрю. Я прверял под линуксом. malloc - не запрашивает память у ОС реальное выделение памяти процессу просходит при memset. ИМХО Это ни при чем. Для Код: plaintext 1. какая-то побитовая инициализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 20:44 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Siemarglохуллиард трехбуквенных паролей, которые хэшировать себе дороже. я предупреждал об этом )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 20:56 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemarglохуллиард трехбуквенных паролей, которые хэшировать себе дороже. я предупреждал об этом )) он перегнул про три буквы, подлиннее там пароли. Да и 62^3 = 238328, всего, а это все варианты [a-z][A-Z][0-9] во всех сочетаниях по три. Минимум 8 букав обычное требование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 21:34 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemarglохуллиард трехбуквенных паролей, которые хэшировать себе дороже. я предупреждал об этом )) Все в порядке Не поддавайтесь панике. Эти все рабочие моменты. Просто надо иметь в виду что данные могут быть любые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 21:51 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Bred eFeMсейчас смотрю-думаю считать crc вместе с поиском конца строки. Ну, и асинхронное чтение и многопоток как прикрутить. Бро. Про асинхронность и многопоток ты подумал верно. Только моя интуиция подсказывает что мы (в данном топике) боремся с алгоритмом. Основной поинт сложности в том что формула асимптоматики здесь не работает. Верне сказать она ЕЩЕ не работает потому что у нас нет бесконечности данных. И на границе перехода от памяти к диску эта формула резко ломается. Всплывают коэффициенты которые опять-же для асимптоматики не играют роли но нашем кейсе ИГРАЮТ и очень даже. Еще поинт добавляет характер и род носителя. Например мы можем легко делать seek по оперативке а тот-же seek по диску стоит во много раз дороже. Это надо учитывать. А деревья поиска можно вначале по длине строк разбить (заодно экономия в записи), и далее или по 8-битной сумме или по одному из байтов crc. Деревья поиска - это хоршая тема. У тебя кст. есть учотка в sourceforge? И нужно доопределится с условиями задачи, RAM достаточно для crc+offset уникального набора или нет? (4G ~ 16 байт для каждой из не более чем 200М уникальных строк в наборе или необходимо реализовать промежуточную выгрузку на диск ) Дружище. Это 100% на откуп тебе. Я вообще никак не модерирую ваш код. Я просто создал нечто вроде тестовой площадки для обкатки идей и решений. Но если твой код будет делать "бо-бо" обычному пользователю (вешать ОС, или работать бесконечно нужно без всякой надежды на завершение) то скорее всего обычный пользователь зайдет в таск менеджер и прибъет твой процесс. И будет прав. И это будет самая лучшая и честная критика. Поэтому - go-go кодить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 22:07 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Друзья! О чем я сейчас думаю. Близится тестирование. 1) Я думаю о тестовой среде как запускать все ваши сорцы. Для этого мне (как минимум) нужна возможность передавать вам аргументы командной строки. Хотя-бы имя файла. Если STDIN то нужно это как-то передать тоже аргументом. Типа признак того что данные ожидаются именно оттуда. From file: Код: plaintext 1. From stdin: Код: plaintext 1. 2) Каждый алгоритм (опционально) может иметь некий настроечный параметр. Объем доступной для него памяти. By default я буду брать примерно 80% от доступной оперативы (то что показывает task manager в разделе free memory). Например: Код: plaintext 1. Данный пример говорит что алгоритму рекомендовано аллоцировать (прямо или косвенно) 2 гига памяти. Если он превысит его то ошибки конечно не будет но и ничего хорошего тоже не ожидается. То есть это рекомендация. Можно юзать. Можно нет. Но если она будет то это хорошо. В любом алгоритме всегда есть какой-то манёвр или workaround в части памяти. Хеш-мапа может брать взвешенную сумму длинн ключей и их количества. Может брать LRU и свопировать редкие ключи. Биткарты соотв можно делить на 2,4,8. Технически это выглядит как отсечение старшего бита или нескольких битов от INT32. Если в алгоритме есть еще вектор параметров - то его тоже надо дать аргументами консоли. Буфера. Тайминги. Гэпы. Ограничители. Типы хеш-функций и какие-то вещественные настройки типа там коэфициенты заполнения buckets в хешмапах. Я как и обещал буду кодить свой алгоритм ближе к выходным (сегодня еле дополз до дивана и слабеющей рукой средним пальцем набиваю текст положив ноут себе на пузо) и буду думать над средой тестинга. 3) Я также думаю о сборе статистики с наших трех тестовых файлов (Test-File-Stats (TFS)). Думаю собирать - rows - cardinality - соотношение двух вышесказанных (типа какова плотность повторов) - средняя длина строки и максимальная (в окрестности выборки) - медиана - 75-й и 97 перцентиль - размер файла Еще экспериментально - наличие ярко выраженного префикса (справочник) - разреженные строки (много пробелов или повторов) Статистика будет собираться экономно. Не по всему файлу. Будем брать семплы (фрагменты) с начала где-то 5% с середины 5% и с хвоста тоже. Я думаю что это репрезентативно. Зачем все это надо? После того как мы закончим бенчмарки у нас будет матрица. Алгоритмы против трех файлов. К каждому файлу я добавлю эти цифры и мы на них внимательно посмотрим и попробуем угадать почему те или иные алгоритмы были лучше или хуже. Грубо говоря мы попробуем дать ПРОГНОЗ на правильный алгоритм для нового файла используя новый TFS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 22:45 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
mayton1) Я думаю о тестовой среде как запускать все ваши сорцы. Для этого мне (как минимум) нужна возможность передавать вам аргументы командной строки. Хотя-бы имя файла. Если STDIN то нужно это как-то передать тоже аргументом. Типа признак того что данные ожидаются именно оттуда. Думаю можно ограничиться именем файла. Решение в один проход маловероятно, а STDIN не повторить. Выходной файл удобнее задавать явно, чтобы не заморачиваться с генерацией имен. Код: plaintext 1. PS Просьба удалить мой пост 20780400 , случайно отправил ничего не написав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 07:03 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Добавил функцию для проверки результата , кому надо - можете пользоваться. Возвращает XOR(CRC32) всех непустых строк, т.е. от порядка строк не изменится. Выводит общую статистику: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 08:06 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Дима. Я вот думаю о кешах. Код: plaintext 1. 2. 3. Может их слить в один?. И еще вдруг возникла мысль что мы записываем не Бит-Карту а Трит-Карту . Может перевести в троичную систему (виртуально) ? Ну примерно... как мы мапим 4 символа латиницы в 3 байта Base64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 09:04 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
maytonДима. Я вот думаю о кешах. Код: plaintext 1. 2. 3. Может их слить в один?. И еще вдруг возникла мысль что мы записываем не Бит-Карту а Трит-Карту . Может перевести в троичную систему (виртуально) ? Ну примерно... как мы мапим 4 символа латиницы в 3 байта Base64. Я думаю может вообще выкинуть dbl и писать повторы сразу в map<crc, string>, т.к. следующий шаг это заполнение map по dbl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 09:26 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
Dima T, да. Стоит попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 09:27 |
|
||
|
Тяпничная унификация
|
|||
|---|---|---|---|
|
#18+
У меня другой алгоритм родился: Шаг 1. Берем две биткарты и для каждой строки считаем CRC разными способами. Пишем два результата. Формат записи: смещение до начала строки в исходном файле. Шаг 2. Сливаем результаты в один и пишем ответ. Смещение возрастает, поэтому в один проход два результата можно сравнить. Главный минус: нет 100% гарантии исключения коллизий. Например для 2-х разных строк один из способов гарантированно даст разные CRC, но есть маленькая вероятность что попадется комбинация из 3-х строк, из которых 1-3 будут иметь коллизию в первой биткарте, 2-3 во второй. В итоге 3-я будет пропущена. Зато по памяти все прогнозируемо: ровно 1 Гб под биткарты. Если есть еще память, то там кэшировать результат в vector<size_t>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2017, 10:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39517951&tid=2018073]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 275ms |

| 0 / 0 |
