|
|
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, А чего ты застрял на семёрке? Давно делают юникод и шаблоны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2017, 13:02:48 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Подписался на этот поисковый "сериал", очень интересно. Лучшее после "теории большого взрыва" :) А если для ускорения поиска модифицировать сам строковый класс? Чтобы часть данных уже была заранее в строке посчитана? Память не жалко. Жалко время. И даже каким-то боком попробовать сюда фильтр Блума прикрутить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 21:06:28 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ART-CODEПодписался на этот поисковый "сериал", очень интересно. Лучшее после "теории большого взрыва" :) А если для ускорения поиска модифицировать сам строковый класс? Чтобы часть данных уже была заранее в строке посчитана? Память не жалко. Жалко время. И даже каким-то боком попробовать сюда фильтр Блума прикрутить? Ничего модифицировать не надо. Такая возможность уже есть из коробки. Достаточно один раз вычислить хеш строки и хранить его рядом со строкой в самом "объектовом" классе. После чего можно использовать protected методы: AddHashed, PutHashed, FindHashed, GetHashed, ExtractHashed, RemoveHashed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 21:39:58 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ART-CODE, Так сериал к концу подошёл. В универсальном случае можно заменить стандартную библиотеку шаблонов на мою. В особых случаях можно реализовать решение на основе кода Шарахова, только заинлайнить хешер и компаратор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 21:40:56 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Спасибо. Прочитал, пора попробовать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 21:58:20 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Похоже, я всё-таки продал душу дьяволу :) Можете посмотреть коммит, не забудьте нажать "Load diff" :) https://github.com/d-mozulyov/Rapid.Generics/commit/6ca71f1b37b493ffd3a8c4af092ec8a47a795aa7 Есть поддержка Delphi 2010 и XE4+ Завести Delphi 2009 и XE1-XE3 так и не удалось Гордо дублирую таблицы бенчмарков: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2017, 01:28:50 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Исправил баг с итераторами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2017, 18:55:08 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Да, много работы проделано. Жаль, что у меня XE 3 и поэтому - у меня не работает (а другую версию я уже, наверно, никогда не куплю). В какую сторону "копать" для того, чтобы "завелось"? Или там какие-то принципиальные ограничения? От комментов как-то специально чистили код? Ну, я по себе сужу: я не могу так "мочаливо" писать. Всегда для себя, (чтобы не забыть) подробно комментирую не только ЧТО, но и ПОЧЕМУ делаю именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 21:36:26 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ART-CODEОт комментов как-то специально чистили код? Там код писался не для понимания другими, а для чтобы "быстрее всех в мире" Лишний комментарий - снижение быстродействия ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 21:39:10 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ART-CODE, Я обычно комментирую много, а тут видимо всё относительно просто, поэтому комментариев по минимуму Изначально либа компилировалась только под XE8, потом пришлось вымучивать код, чтобы компилятор его смог прожевать. Причём заметь, под D2010 компилируется, а под XE1-3 уже нет, хотя используется в точности один и тот же код Связано это с тем, что мало кто пишет дженериковые библиотеки, и стандартной обычно хватает, а те дженерики, что пишутся, обычно просты. Соответственно компилер не протестировали как следует и на данном коде он выдаёт Internal Error. Самые глючные подходы - это метки, локальные типы и локальные структуры без объявленого типа. То есть официально поддерживаться должно, а рушит почти каждый компилятор. Я конечно ещё сделаю заход на XE1-3. Но вообще рекомендую обновиться. Начиная с XE8 уже что-то удобоваримое и работать будет быстрей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 00:33:37 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Добавлена полная поддержка Weak Reference, исправлена пара багов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2017, 00:11:56 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
На нашей улице снова праздник! Удалось сделать сборку для XE1-XE3 Таким образом поддерживаются все версии, начиная с 2010 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2017, 09:36:49 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov Код: pascal 1. 2. 3. 4. 5. 6. Оффтоп. Простите, а выделенное - это религия? Я понимаю, что каждый делает, как хочет. Но вижу такое впервые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2017, 10:49:46 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Квейд, Я думаю у Шарахова маленький монитор и он работает не в команде. У нас за такое больно бьют по рукам ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2017, 16:23:08 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Квейд, да это религия. История корнями уходит. Если не устраивает, удаляется одной заменой. SOFT FOR YOUЯ думаю у Шарахова маленький монитор и он работает не в команде. У нас за такое больно бьют по рукам ) Ошибаешься оба раза. В вашей команде пора начать бить по голове ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2017, 18:16:16 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU , Спасибо, теперь компилируется. Хотя и пишет: "The library is much faster in XE7+ versions." Результат теста во вложении. Windows 8.1x64. 12Gb i7-4710HQ - 2.50GHz --- Я так понимаю, что чтобы работать на полной скорости - мне придется у кого-то (у кого есть XE10) скомпилировать DLL с набором функций, и далее смогу использовать ее где угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2017, 22:25:08 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
В прошлом сообщении были результаты сборки Debug (по ошибке присоединил). Вот результат Release: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2017, 23:44:03 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ART-CODE, Насчёт версий и скорости Грамотность компилятора в плане версий развивалась постепенно 1) inline. Некоторые методы, особенно в TStack, TQueue и TRapidDicictionary, обозначены как inline. Но вроде бы до версии XE5 методы категорически отказывались инлайниться 2) Константный SizeOf. Код изобилует надписями типа if SizeOf() and 2 <> 0, case SizeOf() of и другими. Начиная вроде бы с версии XE4, все эти записи существенно сокращаются и выполняется только какой-то конкретный код, а до этого код раздувается до огромных размеров 3) Умный тип. Начина с XE7 в язык внедрены классные фишки. Можно "инлайном" определить, является ли тип Managed. Или разновидность типа. На этой концепции построен, например, TRapidDictionary. Там "инлайном" определяется разновидность типа, и для строк применяется один хеш/компаратор, для объектов другой, для чисел - третий. Правда в XE7 проблемы с label (метками), поэтому TRapidDictionary один фиг работает как TDictionary. Поэтому начиная с XE8 норм, а дальше улучшений я не заметил Что до dll - да. Но мне кажется, лучше в dll выносить не отдельные команды, а комплексные. ну там какие-то высокоуровневые функции, не знаю, какая у тебя специфика ). В общем, твори ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2017, 12:37:44 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
На одном другом известном форуме :) возникла необходимость в работе со словарем с бинарными ключами. В результате мой юнит пополнился еще один классом. В связи с этим и не только внес изменения в статейку "Хеширование и хеш-таблицы" по адресу http://guildalfa.ru/alsha/node/32 Плюс кое-что добавлено, в частности: - добавил Murmur3Hash (для строки и буфера), - добавил версию ShaPerfectHash для буфера, - радикально ускорил ShaPerfectHash. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 22:16:33 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Murmur3Hash - это сразу 6+! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 22:57:32 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамMurmur3Hash - это сразу 6+! Поясни, что развеселило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 00:25:35 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Название классное. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 00:43:58 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
А где-то есть сравнительное тестирование Murmur2/3 с другими хеш-функциями (Дженкинс, Адлер и др.)? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 00:57:34 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, В статье ничего не нашёл про Murmur3Hash/ShaPerfectHash Пробовал ли ты мой хеш с обработкой 4 байт за итерацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 08:44:17 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUAleksandr Sharahov, В статье ничего не нашёл про Murmur3Hash/ShaPerfectHash Пробовал ли ты мой хеш с обработкой 4 байт за итерацию? Значит, смотрел по диагонали. Есть и в статье немного, и в исходниках. Твой хеш не пробовал, т.к. не было особой надобности: Murmur3 один из самых быстрых качественных хешей общего назначения. Мой всего на 10% медленней, но отлично подходит для текстовых ключей в хеш-таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 10:19:45 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39494975&tid=2041988]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
207ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 179ms |
| total: | 454ms |

| 0 / 0 |
