powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDictionary или TList<>.BinarySearch с позиции поиска
25 сообщений из 479, страница 19 из 20
TDictionary или TList<>.BinarySearch с позиции поиска
    #39423128
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

А чего ты застрял на семёрке?
Давно делают юникод и шаблоны
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39432362
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подписался на этот поисковый "сериал", очень интересно. Лучшее после "теории большого взрыва" :)

А если для ускорения поиска модифицировать сам строковый класс?
Чтобы часть данных уже была заранее в строке посчитана? Память не жалко. Жалко время.
И даже каким-то боком попробовать сюда фильтр Блума прикрутить?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39432379
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODEПодписался на этот поисковый "сериал", очень интересно. Лучшее после "теории большого взрыва" :)

А если для ускорения поиска модифицировать сам строковый класс?
Чтобы часть данных уже была заранее в строке посчитана? Память не жалко. Жалко время.
И даже каким-то боком попробовать сюда фильтр Блума прикрутить?

Ничего модифицировать не надо. Такая возможность уже есть из коробки.
Достаточно один раз вычислить хеш строки и хранить его рядом со строкой в самом "объектовом" классе.
После чего можно использовать protected методы: AddHashed, PutHashed, FindHashed, GetHashed, ExtractHashed, RemoveHashed.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39432380
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,

Так сериал к концу подошёл. В универсальном случае можно заменить стандартную библиотеку шаблонов на мою. В особых случаях можно реализовать решение на основе кода Шарахова, только заинлайнить хешер и компаратор.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39432390
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Прочитал, пора попробовать :)
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39436922
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, я всё-таки продал душу дьяволу :)
Можете посмотреть коммит, не забудьте нажать "Load diff" :)
https://github.com/d-mozulyov/Rapid.Generics/commit/6ca71f1b37b493ffd3a8c4af092ec8a47a795aa7

Есть поддержка Delphi 2010 и XE4+
Завести Delphi 2009 и XE1-XE3 так и не удалось

Гордо дублирую таблицы бенчмарков:





...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39439171
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил баг с итераторами
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39443670
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,
Да, много работы проделано.
Жаль, что у меня XE 3 и поэтому - у меня не работает (а другую версию я уже, наверно, никогда не куплю).
В какую сторону "копать" для того, чтобы "завелось"? Или там какие-то принципиальные ограничения?

От комментов как-то специально чистили код?
Ну, я по себе сужу: я не могу так "мочаливо" писать.
Всегда для себя, (чтобы не забыть) подробно комментирую не только ЧТО, но и ПОЧЕМУ делаю именно так.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39443671
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ART-CODEОт комментов как-то специально чистили код?

Там код писался не для понимания другими, а для чтобы "быстрее всех в мире"
Лишний комментарий - снижение быстродействия !
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39443737
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,

Я обычно комментирую много, а тут видимо всё относительно просто, поэтому комментариев по минимуму
Изначально либа компилировалась только под XE8, потом пришлось вымучивать код, чтобы компилятор его смог прожевать. Причём заметь, под D2010 компилируется, а под XE1-3 уже нет, хотя используется в точности один и тот же код

Связано это с тем, что мало кто пишет дженериковые библиотеки, и стандартной обычно хватает, а те дженерики, что пишутся, обычно просты. Соответственно компилер не протестировали как следует и на данном коде он выдаёт Internal Error. Самые глючные подходы - это метки, локальные типы и локальные структуры без объявленого типа. То есть официально поддерживаться должно, а рушит почти каждый компилятор.

Я конечно ещё сделаю заход на XE1-3. Но вообще рекомендую обновиться. Начиная с XE8 уже что-то удобоваримое и работать будет быстрей
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39445792
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлена полная поддержка Weak Reference, исправлена пара багов
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446462
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На нашей улице снова праздник!
Удалось сделать сборку для XE1-XE3
Таким образом поддерживаются все версии, начиная с 2010
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446482
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Код: pascal
1.
2.
3.
4.
5.
6.
  for i := 0 to ITEMS_COUNT-1 do begin;
///...
  for Mode := Low(MODES) to High(MODES) do begin;
///...
    else begin;
///...



Оффтоп. Простите, а выделенное - это религия? Я понимаю, что каждый делает, как хочет. Но вижу такое впервые.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446558
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,

Я думаю у Шарахова маленький монитор и он работает не в команде. У нас за такое больно бьют по рукам )
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446589
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд, да это религия. История корнями уходит. Если не устраивает, удаляется одной заменой.

SOFT FOR YOUЯ думаю у Шарахова маленький монитор и он работает не в команде. У нас за такое больно бьют по рукам )

Ошибаешься оба раза. В вашей команде пора начать бить по голове )
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446802
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU ,
Спасибо, теперь компилируется.
Хотя и пишет: "The library is much faster in XE7+ versions."
Результат теста во вложении.
Windows 8.1x64. 12Gb
i7-4710HQ - 2.50GHz
---
Я так понимаю, что чтобы работать на полной скорости - мне придется у кого-то (у кого есть XE10)
скомпилировать DLL с набором функций, и далее смогу использовать ее где угодно.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446807
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В прошлом сообщении были результаты сборки Debug (по ошибке присоединил).
Вот результат Release:
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39446870
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 выносить не отдельные команды, а комплексные. ну там какие-то высокоуровневые функции, не знаю, какая у тебя специфика ). В общем, твори
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39494927
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На одном другом известном форуме :) возникла необходимость в работе со словарем с бинарными ключами.

В результате мой юнит пополнился еще один классом.

В связи с этим и не только внес изменения в статейку "Хеширование и хеш-таблицы" по адресу http://guildalfa.ru/alsha/node/32

Плюс кое-что добавлено, в частности:
- добавил Murmur3Hash (для строки и буфера),
- добавил версию ShaPerfectHash для буфера,
- радикально ускорил ShaPerfectHash.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39494935
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murmur3Hash - это сразу 6+!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39494961
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамMurmur3Hash - это сразу 6+! Поясни, что развеселило?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39494972
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Название классное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39494975
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где-то есть сравнительное тестирование Murmur2/3
с другими хеш-функциями (Дженкинс, Адлер и др.)?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39495030
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

В статье ничего не нашёл про Murmur3Hash/ShaPerfectHash
Пробовал ли ты мой хеш с обработкой 4 байт за итерацию?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39495070
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUAleksandr Sharahov,

В статье ничего не нашёл про Murmur3Hash/ShaPerfectHash
Пробовал ли ты мой хеш с обработкой 4 байт за итерацию?

Значит, смотрел по диагонали. Есть и в статье немного, и в исходниках.

Твой хеш не пробовал, т.к. не было особой надобности:

Murmur3 один из самых быстрых качественных хешей общего назначения.
Мой всего на 10% медленней, но отлично подходит для текстовых ключей в хеш-таблицах.
...
Рейтинг: 0 / 0
25 сообщений из 479, страница 19 из 20
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDictionary или TList<>.BinarySearch с позиции поиска
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]