|
|
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Миллион сортированных строк (MSSQL ORDER BY ASC): str: varchar(12), value: int Str - фиксированной длины, то есть все строки всегда одной длинны и содержат только цифры. В режиме многопоточности сканится список и иногда обновляется (путем добавления снизу). Что хотелось бы - скорости в поиске и отсутствия большого объема данных в памяти. В настоящий момент я использую TList<>.BinarySearch. Comparer конкретно в данном случае выглядит примерно так: Код: pascal 1. Но есть другие места, где в схожей задаче comparer выглядит так Код: pascal 1. 2. 3. 4. 5. Вторичный вопрос: Имеет ли особый смысл приведения строковых данных, например, к а) хешу и б) инту (интам), кодируя каждый байт строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:33:58 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Как вариант - разбей гигантский лист на несколько поменьше. И данные в них раздели например по MOD от хэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:44:08 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, Хеш быстрее сортированного списка или тем более дерева В чём вопрос - я так и не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 20:37:32 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, может базе отдать базово и не заниматься творческим онанизмом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 20:45:21 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU , хеш - это же строка в любом случае, нет? 12 символов против 20, а в чем тогда выгода? Это выше вопросы - раз. и два - стоит ли вместо строк хранить хеш в листе и все это делать самому, или, например, воспользвоаться TDictionary - он же сам это все (в тч бинарный поиск) делает или нет? makhaonможет базе отдать базово Ну давайте рассуждать а) много потоков б) в пике до 50 серчей в секунду. в) миллион записей (это порядок цифр, а не точное значение). Что лучше - затрахать базу по ТСР или использовать память и проц сервера? Допустим выбираем "затрахать базу по ТСР". Что сделать? Все строки привести к чему? Или построить индекс по тексту? rgreat , это уже перебор. Не понятно, что это даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:12:09 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер SOFT FOR YOU , хеш - это же строка в любом случае, нет? нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:14:20 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, ой, да ладно, напугал базу миллионом записей ) >в пике до 50 серчей в секунду. гугл посмотри, и ничего - справляется. весь вопрос в базе, железе и запросах. вообще, я для себя давно вывел простое правило. базы не зря придумали. и алгоритмы для них десятилетиями пилили. и довольно мало шансов, что у себя получится сделать лучше. поэтому всем поиском должна заниматься база. только нужно её нормально настроить и запросы написать. впрочем - дело твоё, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:22:03 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер rgreat , это уже перебор. Не понятно, что это даст. Если сделаешь 10 листов вместо одного то искать придется не в миллионе записей а в ста тысячах. Что явно быстрей. И это все почти бесплатно. Опять-таки добавление объекта в маленький сортированый лист будет работать на порядок быстрей чем в большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:25:07 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, авторЧто лучше - затрахать базу по ТСР или использовать память и проц сервера? к слову - а чё её трахать? если у тебя изменяемых записей почти нет? кидай данные на сторону базы и пусть она там в себе ковыряется сама. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:25:15 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
defecator, приведите пример класса с хеш-переменной, какой у нее будет тип? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:35:02 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
makhaonсерчер, ой, да ладно, напугал базу миллионом записей ) >в пике до 50 серчей в секунду. гугл посмотри, и ничего - справляется. весь вопрос в базе, железе и запросах. вообще, я для себя давно вывел простое правило. базы не зря придумали. и алгоритмы для них десятилетиями пилили. и довольно мало шансов, что у себя получится сделать лучше. поэтому всем поиском должна заниматься база. только нужно её нормально настроить и запросы написать. впрочем - дело твоё, конечно. Там были еще вопросы или мимо прошли вопросы? :) А я бы почитал ответы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:36:44 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчерdefecator, приведите пример класса с хеш-переменной, какой у нее будет тип?Тип может быть любой. От байта до строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:37:35 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Господа, а что вы скажете про TDictionary vs TList<> в плане использования для поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:37:55 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
rgreatсерчерdefecator, приведите пример класса с хеш-переменной, какой у нее будет тип?Тип может быть любой. От байта до строки. Разумеется. Какой в данном случае подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:39:15 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, TDictionary по любому быстрей, но могут быть рандомные просадки быстродействия во время его роста. И на TDictionary надо больше памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:40:33 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, Вот - такие у меня для тебя ответы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:40:36 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчерГоспода, а что вы скажете про TDictionary vs TList<> в плане использования для поиска? Ищет быстро. Хэши долго делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:40:48 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчер, Обычно используют 4 байта. А что подойдет вам - это ваше решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 21:41:27 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
makhaon , да я так и понял, что никаких, кроме блаблабла :) asviridenkov , спасибо rgreat , мой случай это строка из 12 символов. 12 байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 22:15:09 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчерГоспода, а что вы скажете про TDictionary vs TList<> в плане использования для поиска? Скажу - замути тест и сам замерь производительность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 22:18:41 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчерхеш - это же строка в любом случае, нет? Нет, конечно. Результат простой хеш-функции CRC32 это integer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2016, 00:55:51 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
makhaonсерчер, Приходишь на публичный форум - будь готов к любым ответам. Всё взаимообратно. Отвечаешь что хочешь, ведешь себя непотребно или говоришь не по теме - ты никому нравиться не обязан. Квейд В рамках Дельфи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2016, 16:02:17 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
серчерВсё взаимообратно. Отвечаешь что хочешь, ведешь себя непотребно или говоришь не по теме - ты никому нравиться не обязан.Вообще-то он всё правильно говорил. Кури матчасть. Хэш может быть какой угодно, чаще всего целочисленное число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2016, 17:23:03 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
Ну че там по тестам то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2016, 12:35:15 |
|
||
|
TDictionary или TList<>.BinarySearch с позиции поиска
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Пока не делал. Лучшим решением все таки было бы хеш сделать. Только не очень понятно чем воспользоваться, чтобы к инту привести вот такие строки D6999900001 D6999900002 A6999900003 F6999900004 .... И затем сравниваемое (которое может входить или не входить в данный набор) так же приводить к уникальному инту и по нему сравнивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2016, 17:31:21 |
|
||
|
|

start [/forum/search_topic.php?author=foruser&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 418ms |
| total: | 654ms |

| 0 / 0 |
