powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDictionary или TList<>.BinarySearch с позиции поиска
25 сообщений из 479, страница 8 из 20
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380872
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал анимированные гифки показывающие в динамике распределение при заполнении хеш-таблицы с разными хеш-функциями. В качестве ключей использовались слова из орфографического словаря русского языка Лопатина (~151 тыс. слов. ссылка есть на предыдущей странице). Кадры сделаны через каждые 50 вставок в таблицу.

Анимированный гиф, 2Mb. Используется хеш-функция Седжвика. Время заполнения 60 msec.

Анимированный гиф, 1.7Mb. Используется хеш-функция SOFT FOR YOU (FastHash). Время заполнения 2823 msec.

Хотел сделать гифки с поясняющими подписями, чтобы было видно и время и коэффициент заполненности в моменты расширения таблицы, но такие гифы плохо оптимизируются и весят под 70Mb.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380873
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

С параметрами поэкспериментирую, как придумаю, как это дело автоматизировать :)
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380875
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Анимированный гиф, 1.7Mb. Используется хеш-функция SOFT FOR YOU (FastHash). Время заполнения 2823 msec.
Треш и угар.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380886
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyВремя заполнения 60 msec.

Что так долго? )
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380898
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovЧто так долго? )
Разве долго? TDictionary - 131 msec. У меня Phenom II 3GHz + дельфя на виртуалке.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380900
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyAleksandr SharahovЧто так долго? )
Разве долго? TDictionary - 131 msec. У меня Phenom II 3GHz + дельфя на виртуалке.

Мою поделку попробуй )
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380914
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovМою поделку попробуй )
Напрямую не получится. У тебя ключи - байтовые строки, у меня - юникод. У тебя таблица хранит объекты, у меня собственный тип размером 16 байт. К тому же моя таблица поддерживает индексный доступ. Но я всё же померял. Ключи твоей таблице отдал в utf8, у себя изменил внутренний тип данных. В результате паритет - ~30/~37 msec.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380921
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyAleksandr SharahovМою поделку попробуй )
Напрямую не получится. У тебя ключи - байтовые строки, у меня - юникод. У тебя таблица хранит объекты, у меня собственный тип размером 16 байт. К тому же моя таблица поддерживает индексный доступ. Но я всё же померял. Ключи твоей таблице отдал в utf8, у себя изменил внутренний тип данных. В результате паритет - ~30/~37 msec.

Где-то еще тормоза добавил, но скрываешь)
Чисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380929
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovГде-то еще тормоза добавил, но скрываешь)
Наоборот, даже ключи предварительно подготавливаю, чтоб не конвертировать в момент вставки.
Aleksandr SharahovЧисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее.
Железо какое?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380930
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyAleksandr SharahovГде-то еще тормоза добавил, но скрываешь)
Наоборот, даже ключи предварительно подготавливаю, чтоб не конвертировать в момент вставки.
Aleksandr SharahovЧисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее.
Железо какое?

i5-3470 3.2GHz 4Gb
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380936
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovi5-3470 3.2GHz 4Gb
Чему тогда удивляться :) Где Phenom II и где i5. Дельфийский TDictonary за сколько заполняется?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380937
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Странно, неужели так длина ключа влияет?
Попробуй на юникод переделать или через байт ключ обрабатывать.
Интересно, на сколько ускорится.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380941
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyAleksandr Sharahovi5-3470 3.2GHz 4Gb
Чему тогда удивляться :) Где Phenom II и где i5. Дельфийский TDictonary за сколько заполняется?

Дык все равно что-то очень уж.
Я на Delphi7. TDictionary не юзаю. Свои таблицы, типа твоей.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380954
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Еще как вариант: т.к. вычисляется другое значение ключа,
соответственно работа с памятью в другой последовательности.
Но должно же усредняться, блин.

Остается проц.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380958
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Переделал твою таблицу на юникод (RawByteString = UnicodeString ). Поменял дефолтный хеш на ShaPerfectHash (был ShaPerfectHashAsm). У своей таблицы также поменял хеш на твой и вернул свой тип данных. Перед замером установил вместимость таблиц (на первом замере не устанавливал, и это может объяснять почему моя на первом замере была чуть медленне. у меня, по дефолту, при расширении таблицы используется реаллок, а не перевыделение памяти).

Твоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136.
Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952.

Паритет ;) Хотя я удивлён, т.к. на вставке у меня 16 байт, вместо 4 у тебя.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380959
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovОстается проц.
Скорее всего так и есть. Я первый вариант свой таблицы писал и отлаживал на AMD, потом проверил на древнем Pentium Mobile и за голову схватился - моя работала медленне дельфийского TDictionary (хотя на AMD была сильно быстрее).
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380970
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyТвоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136.
Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952.
Ой. Твоя - моя перепутал.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380978
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyKazantsev AlexeyТвоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136.
Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952.
Ой. Твоя - моя перепутал.

Думаю, если код из FindCodeName перетащить в FindName, разницы вообще не будет.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380984
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас ещё сделал чтобы твоя таблица хранила не объекты, а мой тип данных (16 байт). И проверил всё не на виртуальной машине. Три замера, лучшие результаты:
Твоя: вставка - 33, поиск всех ключей (1000 итераций) - 21316.
Моя: вставка - 33, поиск всех ключей (1000 итераций) - 18707.
У меня лучший результат на поиске по причине другой организации данных в таблице (для снижения расхода памяти, из-за размера хранимых значений + индексного доступа). В общем, если привести структуру ко классической таблице, то и по поиску будет паритет.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39380996
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ох ты какой интересный топик, жалко времени нет
murmur3 очень интересно как пашет
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39381018
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)murmur3 очень интересно как пашет
Вставка - 41, Поиск всех ключей (1000 итераций) - 23319

Распределение:
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39381027
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

а на чём тестил?
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39381028
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

компилятор и проц имею ввиду
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39381031
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)компилятор и проц имею ввиду
Delphi XE2, Phenom II X4 940 3GHz.
...
Рейтинг: 0 / 0
TDictionary или TList<>.BinarySearch с позиции поиска
    #39381046
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

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


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