|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
maytonjenya7не понял вопроса? проблема в скорости поиска элемента. table1 и table2 это статическая память в РАМ. я получил данные table1.items[0].reference_number = 100 table1.items[0].priority_level = 0 ------------------------------------------ table1.items[11].reference_number = 111 table1.items[11].priority_level = 11 в этот момент я перебираю все элемены в table2 и ищу совпадение table2[i].reference_number == table1.items[j].reference_number нашел? table2[i].priority_level == table1.items[j].priority_level вся проблема в быстроте поиска. это единственная проблема. в случае с хэш таблицей нужно учитывать что элементы в table2 могут быть удалены и выделенная память в хэш таблице не освободиться. Блинн. Почему с тобой так сложно? Почему ты решил что это есть проблема? Я не просто так спросил про доступную память. Потому что СУЩЕСТВУЮТ хеш таблички которые работают не ре-аллоцируя память. Но для этого им нужно дать чуть больше памяти (1.5-2 раза) чем твои элементы. ПОЭТОМУ я нудным голосом спрашиваю тебя еще раз - Сколько памяти можно выделить в твоём микро-контроллере или ХЗ в чем-то еще! Женя. Дорогой. Отвечай на вопросы экспертов. Если ты не отвечаешь - то можно сделать вывод что помощь тебе не нужна. И ты просто пришел сюда от скуки. В принципе занести в хэш таблицу нам нужно 12 элементов. Даже если нужно памяти в два раза больше - 24 элемента, конечно там есть. Это не слабый микроконтролер у него 128 Мега РАМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:24 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
извиняюсь. ошибся. это если бы было определенное количество ключей (reference_number). если придет элемент с другим ключем то нужно добавлять элемент в хэш таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:39 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
jenya7В принципе занести в хэш таблицу нам нужно 12 элементов. Даже если нужно памяти в два раза больше - 24 элемента, конечно там есть. Это не слабый микроконтролер у него 128 Мега РАМ. В английской википедии по HashTable описан метод открытой адресации. https://en.wikipedia.org/wiki/Hash_table#Open_addressing Можешь его использовать. Экспериментально подбери размер чтоб для твоих данных не было ни одной коллизии. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:41 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
maytonjenya7В принципе занести в хэш таблицу нам нужно 12 элементов. Даже если нужно памяти в два раза больше - 24 элемента, конечно там есть. Это не слабый микроконтролер у него 128 Мега РАМ. В английской википедии по HashTable описан метод открытой адресации. https://en.wikipedia.org/wiki/Hash_table#Open_addressing Можешь его использовать. Экспериментально подбери размер чтоб для твоих данных не было ни одной коллизии. спасибо. попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:48 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
вобщем сделал такой ход конем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76.
нужно только оптимально настроить количество узлов и их глубину. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:16 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Посмотри еще как хешируют целые числа https://en.wikipedia.org/wiki/Universal_hashing#Hashing_integers ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:30 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Может я не врубаюсь в проблему, но мне кажется, что проблема "...обновляются асинхронно.....за время поиска....." решается корректным многозадачным программированием (блокировками, copy-on-write и так далее) и никакой алгоритм поиска, хоть в цикле, хоть hash'ем, хоть через ж..., хоть через гланды - никак ситуацию изменить не может IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:33 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
jenya7, хеш таблица на 12 элементов не имеет смысла, дольше будете вычислять хеши, даже последовательное чтение 12 элементов будет быстрее. Если уж и делать хеш то для таблицы 512 элементов. Тогда нужно будет вычислить всего 12 хешей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:36 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Поиск в массиве из двух элементов обычно идет быстрее чем в хеш табличке из двух этих-же элементов. Это я не ради троллинга сказал. А просто такова есть природа вещей. Иногда мы используем хеш-таблички просто потому что верим в них. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:38 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
mayton...обычно идет быстрее..... Какая разница: быстрее/медленнее ? Если он выполняется дольше одного такта ))), то вероятность того, что будут неверные(не согласованные) данные из-за "обновляются асинхронно" никуда не исчезнет. А это фантастика, т.к. даже доступ к оперативной памяти на современных процессорах выполняется дольше одного такта ))) Где-то в Инете Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:18 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Если люди работают с сетевым протоколом то ожидание готовности следующего сетевого пакета будет настолько недетерминированным и говорить о наносекундах будет настолько странно как если-бы мы с вами говорили о личной гигиене во времена короля Людовика 14. Зачем говорит о том чего нет. И какой смысл ускорять хендлинг данных в наносекунды если лаг сетей меряется милисекундами. Это цифры не того порядка. Хотя может у автора там другая шина. Не эзернет... Был лет 5 назад один чел с ником Студентик/Базист. Если помните. Он строил ин-мемори ДБМС с наносекундным откликом. А адаптеры к ней писал на дотнете. Вобщем... нагромождение нелепиц. Хотя с ним было нескучно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:25 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
mayton, да ТС пока даже не удосужился ответить "кто ложит данные", "кто забирает данные" без учёта этого решать то, что он навыдумывал вообще бессмысленно ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:30 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
21801729 ))) 21802617 "вся проблема в быстроте поиска. это единственная проблема." ( C ) ))))))))) mayton...о личной гигиене во времена короля Людовика 14.... "дорогая, я возврашаюсь из Египта, не мойся" ( C ) Наполион - Жозефине ))) не дословно, с чужих слов, ссылку на архивные материалы привести не могу ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:34 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Да. Французы это еще те пакостники. Не в обиду им будь сказано. По поводу "разных источников". Принят и обработать - не одно и то-же. Никто не запрещает автору их просто складывать в кольцевой буфер и обрабатывать по мере возможности. На прерываниях там... или на континуэйшенах или хер ево знает как этот АРМ работает. Не знаю. Но я вобщем щас нарушаю своё собственное правило в топиках... Начинаю додумывать за автора его задачу. А он - скуп на слова. Мдя... Может дипломную работу делает. Эдакий стесняшка.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:38 |
|
Быстрый поиск поля в массиве в С
|
|||
---|---|---|---|
#18+
Offtopic "про Людовика XIV": где-то-в-Инете... К минимальной обязательной ежедневной гигиене в 16-18 веках относилось умывание рук, лица и ног. Водой. И чем холоднее, тем лучше. Этому учили с детства. За обеденным столом у знати стояли плошки с душистой водой и полотенца – чтобы перед едой сполоснуть руки. Но, как во все времена, люди были более чистоплотные и менее чистоплотные. Рот споласкивали водой, а зубы чистили деревянными палочками. В Европе зубная щетка появилась в 50-х годах XVI века. Уже в 1728 г. знаменитый французский врач Фошар в руководстве по зубоврачеванию указывал о применении зубной щетки из щетины. Для усиления очищающего действия зубной щетки издавна применяли различные порошки: пепел, поваренную соль. Конечно, зубы у многих были плохие. ... Людовик XIV ... Герцог Сен-Симон описывает, что тело короля по утрам растирали лосьоном из роз и затем насухо полотенцем и меняли рубашку. Один из слуг умывал королю руки смесью воды и вина. Людвиг XIV полностью менял гардероб 3-4 раза в день – после охоты, после прогулки, после бала. И каждый раз ему подавали свежее белье и растирали его с головы ло пят спиртовым лосьоном из роз или лаванды. Таким образом, он был одним из самых чистых людей своей эпохи. И ванны Людовик XIV принимал. Но он в них .....не мылся, а принимал их с лечебными целями, с целью расслабиться, а также для интимных встреч с фаворитками...Его подданные старались копировать его во всем. При Людовике XIV в Версале было около 100 мобильных ванн. Король не разрешал устанавливать в Версале стационарные ванны. Исключением был он сам. Сам Людовик XIV был единственным в Версале, кто имел не мобильные, а стационарные «купальные апартаменты - «appartements de bains», состоявшие из трех помещений, с теплой водой. .... Купальные аппартаменты Людовика XIV в Версале (восьмиугольная ванна изображена красным цветом). Вот что осталось от ванных аппартаментов Людовика XIV: восьмиугольная ванна из лангедокского мрамора. Эта ванна «короля-солнца» прошла через многие руки, одно время была в собственности Мадам де Помпадур, затем Наполеона. А теперь стоит в оранжерее Версаля. Раньше стены ванны украшали фигуры дельфинов и русалок. Но новому королю Людовику XV помещения понадобились для своей дочери – Версаль постоянно перестраивался. И „appartements de bains" были разрушены. Сейчас эта ванна стоит в Оранжерее Версаля. Франция, XVII век, Неизвестный художник. Женщина принимает ванну с чашкой шоколада Bidet / биде изобрели и впервые стали применять во Франции в 17м веке. В переводе это слово обозначает «маленькая лошадка» Модератор: Тема перенесена из форума "Программирование". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 20:26 |
|
|
start [/forum/topic.php?fid=57&msg=39770235&tid=2017670]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 148ms |
0 / 0 |