|
|
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Всем привет Есть у меня библиотечка, которая полностью повторяет функционал стандартных дженериков: https://github.com/d-mozulyov/Rapid.Generics В последнее время стал замечать, что мне не хватает некоторого функционала. Во-первых, мне не хватает, чтобы классы поддерживали интерфейсы. Во-вторых, мне не хватает TSet<T>, который я сейчас эмулирую через TDictionary<T,Boolean>. В связи с этим выберу как-нибудь выходные, засяду за доработку, внесу изменения. Но возник вопрос, который самостоятельно не могу решить, решил посоветоваться. Все мы знаем сишный контейнер map<>, который долгое время был единственным способом быстрого поиска. На уровне алгоритма используется красно-чёрное дерево и как следствие - упорядоченная по возрастанию структура. Вопрос: нужен ли такой контейнер в Delphi? И если да, то как его назвать? Какие методы нужны? Нужно ли что-то типа... обойти элементы, начиная с ...? Нужно ли пройтись в обратном порядке? В общем интересны ваши мнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:02 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, слишком редко они бывают нужны TOrderedDictionary если уж безобразить, хотя мне и жутко не нравятся префиксы T перед генериками >>Нужно ли что-то типа... обойти элементы, начиная с ...? Нужно ли пройтись в обратном порядке? "в интервале" забыл куда ж без них а что у тебя перечислители классами сделаны? не по православному ... и LinkedHashMap вроде нет ещё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:18 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Неплохое имя, кстати Шо за LinkedHashMap? Итераторы я копировал стандартные. Или что я сделал не так? Давай код :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:29 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Каким бы ни был "дженерик для бинарного дерева", он должен быть самым быстрым в мире ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:32 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
defecator, Обижаешь. Конечно должен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:35 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, И делай, пожалуйста, сразу так, чтобы (быстрый) доступ был мультипоточным.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:46 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Vlad FSOFT FOR YOU, И делай, пожалуйста, сразу так, чтобы (быстрый) доступ был мультипоточным.)) И при этом - неблокирующим! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 18:09 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
И лекарство от жадности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 18:22 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUВо-вторых, мне не хватает TSet<T>, который я сейчас эмулирую через TDictionary<T,Boolean>.У меня для этого есть TArrayEx<T>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 18:23 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Не мешайте настраивать человека сразу на большие дела и великие свершения. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:02 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:20 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUбиблиотечка, которая полностью повторяет функционал стандартных дженерикова зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:36 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
fd00ch, Наверно она будет самой быстрой в мире. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:38 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
rgreat, пока не придет Шарахов и не набросит че-нить)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:43 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Я ничерта не понял Какие у него преимущества над хешем или деревом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:45 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Vlad F, Может ты конечно и подколол, но на самом деле не очень далеко ушёл от истины :) Я стартовал отдельный репозиторий шаблонов lock-free, но пока остановился на очереди. Делать лок фри хеш или дерево - жестко. Но оптимизировать для мультипоточного доступа можно. В частности можно разграничить читающие потоки и модифицирующие. Читающие потоки могут сколько угодно заходить в контейнер, пока не появился модифицирующий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:52 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
fd00chSOFT FOR YOUбиблиотечка, которая полностью повторяет функционал стандартных дженерикова зачем? Стандартные дженерики написаны по-дебильному, мне удалось реализовать дженерики, которые быстрее в разы. А Шарахов, да, может сделать ещё быстрее. Но у него не дженерики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:54 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUкоторые быстрее в разыпри использовании одинаковой хеш-функции?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:57 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), Я ничерта не понял Какие у него преимущества над хешем или деревом? если в TDictionary добавляешь элементы, пройдёшся по ним итератором; в каком порядке они будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 19:57 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Какой там подколол, - сделай, пожалуйста, сбалансированное бинарное дерево, по возможности наиболее быстрое, с многопоточных доступом на вставку/поиск, очень надо. Понятно, что совсем без блокировок в нем таки не обойдёшься, но и блокировки блокировкам рознь. Верю в тебя.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 20:01 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Vlad FSOFT FOR YOU, Какой там подколол, - сделай, пожалуйста, сбалансированное бинарное дерево, по возможности наиболее быстрое, с многопоточных доступом на вставку/поиск, очень надо. Понятно, что совсем без блокировок в нем таки не обойдёшься, но и блокировки блокировкам рознь. Верю в тебя.)) и без генериков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 20:04 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUИтераторы я копировал стандартные. Или что я сделал не так? Давай код :)первый плюс - итератор можно сделать Record и он не будет создаваться в куче. второй плюс, фактически нужно всего 1 свойство и один метод - вызов по сравнению с перекрытием виртуальных методов будет чуток, но быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 20:06 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
Vlad FSOFT FOR YOU, Какой там подколол, - сделай, пожалуйста, сбалансированное бинарное дерево, по возможности наиболее быстрое, с многопоточных доступом на вставку/поиск, очень надо. Понятно, что совсем без блокировок в нем таки не обойдёшься, но и блокировки блокировкам рознь. Верю в тебя.))даже если он его содаст, как его использовать будешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 20:08 |
|
||
|
Нужен ли дженерик для бинарного дерева?
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUмне удалось реализовать дженерики, которые быстрее в разы. На самом деле нет. Просто ты бенчи писать не умеешь. Дельфийский словарь нагибает твой влёгкую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 20:10 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39613743&tid=2041157]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 561ms |

| 0 / 0 |
