|
|
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Сделал анимированные гифки показывающие в динамике распределение при заполнении хеш-таблицы с разными хеш-функциями. В качестве ключей использовались слова из орфографического словаря русского языка Лопатина (~151 тыс. слов. ссылка есть на предыдущей странице). Кадры сделаны через каждые 50 вставок в таблицу. Хотел сделать гифки с поясняющими подписями, чтобы было видно и время и коэффициент заполненности в моменты расширения таблицы, но такие гифы плохо оптимизируются и весят под 70Mb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 14:31:17 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, С параметрами поэкспериментирую, как придумаю, как это дело автоматизировать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 14:32:54 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Треш и угар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 14:36:11 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyВремя заполнения 60 msec. Что так долго? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 14:57:58 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovЧто так долго? ) Разве долго? TDictionary - 131 msec. У меня Phenom II 3GHz + дельфя на виртуалке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 15:12:44 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr SharahovЧто так долго? ) Разве долго? TDictionary - 131 msec. У меня Phenom II 3GHz + дельфя на виртуалке. Мою поделку попробуй ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 15:14:53 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovМою поделку попробуй ) Напрямую не получится. У тебя ключи - байтовые строки, у меня - юникод. У тебя таблица хранит объекты, у меня собственный тип размером 16 байт. К тому же моя таблица поддерживает индексный доступ. Но я всё же померял. Ключи твоей таблице отдал в utf8, у себя изменил внутренний тип данных. В результате паритет - ~30/~37 msec. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 15:38:20 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr SharahovМою поделку попробуй ) Напрямую не получится. У тебя ключи - байтовые строки, у меня - юникод. У тебя таблица хранит объекты, у меня собственный тип размером 16 байт. К тому же моя таблица поддерживает индексный доступ. Но я всё же померял. Ключи твоей таблице отдал в utf8, у себя изменил внутренний тип данных. В результате паритет - ~30/~37 msec. Где-то еще тормоза добавил, но скрываешь) Чисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 15:51:29 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovГде-то еще тормоза добавил, но скрываешь) Наоборот, даже ключи предварительно подготавливаю, чтоб не конвертировать в момент вставки. Aleksandr SharahovЧисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее. Железо какое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:05:43 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr SharahovГде-то еще тормоза добавил, но скрываешь) Наоборот, даже ключи предварительно подготавливаю, чтоб не конвертировать в момент вставки. Aleksandr SharahovЧисто загрузка слов, сидящих в памяти, у меня в 2 с лишним раза быстрее. Железо какое? i5-3470 3.2GHz 4Gb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:08:22 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovi5-3470 3.2GHz 4Gb Чему тогда удивляться :) Где Phenom II и где i5. Дельфийский TDictonary за сколько заполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:15:44 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Странно, неужели так длина ключа влияет? Попробуй на юникод переделать или через байт ключ обрабатывать. Интересно, на сколько ускорится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:17:37 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr Sharahovi5-3470 3.2GHz 4Gb Чему тогда удивляться :) Где Phenom II и где i5. Дельфийский TDictonary за сколько заполняется? Дык все равно что-то очень уж. Я на Delphi7. TDictionary не юзаю. Свои таблицы, типа твоей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:19:59 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Еще как вариант: т.к. вычисляется другое значение ключа, соответственно работа с памятью в другой последовательности. Но должно же усредняться, блин. Остается проц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:45:04 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Переделал твою таблицу на юникод (RawByteString = UnicodeString ). Поменял дефолтный хеш на ShaPerfectHash (был ShaPerfectHashAsm). У своей таблицы также поменял хеш на твой и вернул свой тип данных. Перед замером установил вместимость таблиц (на первом замере не устанавливал, и это может объяснять почему моя на первом замере была чуть медленне. у меня, по дефолту, при расширении таблицы используется реаллок, а не перевыделение памяти). Твоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136. Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952. Паритет ;) Хотя я удивлён, т.к. на вставке у меня 16 байт, вместо 4 у тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:46:51 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovОстается проц. Скорее всего так и есть. Я первый вариант свой таблицы писал и отлаживал на AMD, потом проверил на древнем Pentium Mobile и за голову схватился - моя работала медленне дельфийского TDictionary (хотя на AMD была сильно быстрее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 16:50:33 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyТвоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136. Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952. Ой. Твоя - моя перепутал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 17:09:51 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyKazantsev AlexeyТвоя: вставка - 35, поиск всех ключей (1000 итераций) - 21136. Моя: вставка - 34, поиск всех ключей (1000 итераций) - 21952. Ой. Твоя - моя перепутал. Думаю, если код из FindCodeName перетащить в FindName, разницы вообще не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 17:26:58 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Сейчас ещё сделал чтобы твоя таблица хранила не объекты, а мой тип данных (16 байт). И проверил всё не на виртуальной машине. Три замера, лучшие результаты: Твоя: вставка - 33, поиск всех ключей (1000 итераций) - 21316. Моя: вставка - 33, поиск всех ключей (1000 итераций) - 18707. У меня лучший результат на поиске по причине другой организации данных в таблице (для снижения расхода памяти, из-за размера хранимых значений + индексного доступа). В общем, если привести структуру ко классической таблице, то и по поиску будет паритет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 17:37:14 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
ох ты какой интересный топик, жалко времени нет murmur3 очень интересно как пашет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 17:58:44 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)murmur3 очень интересно как пашет Вставка - 41, Поиск всех ключей (1000 итераций) - 23319 Распределение: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 18:29:15 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, а на чём тестил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 18:51:22 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, компилятор и проц имею ввиду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 18:51:51 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)компилятор и проц имею ввиду Delphi XE2, Phenom II X4 940 3GHz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2017, 18:58:27 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39380959&tid=2041988]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
209ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 531ms |

| 0 / 0 |
