|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Есть массив хешей: @rows = [{'id'=>1, 'name'=>'abc', ...}, {'id'=>2, 'name'=>'def', ...}, ... ] Для быстрого поиска в этой массиве я делаю индекс: $idx = {'abc'=>$rows[0], 'def'=>$rows[1], ...} Или лучше его делать таким? $idx = {'abc'=>0, 'def'=>1, ...} ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 17:01 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Alibek B., а поиск по имени или содержимому? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 08:34 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Что значит "по содержимому"? Мне нужно находить элемент по name, значения уникальны. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 08:38 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Alibek B., Напрашивается хранение данных в виде хеша 'уникальное_имя'=>какие-то_данные Отдельный индекс не нужен, если только не потребуется поиск по данным. Не годится? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 13:17 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Поиск требуется, у меня два индекса (в одних случаях нужно искать по id, в других по name, иногда еще по каким-то данным). Ну и еще есть некоторый в профит в том, что сохраняется порядок записей (которые я получаю в JSON с веб-сервиса). Сейчас я храню сам элемент, это (как мне кажется) несколько упрощает работу с данными: $title = $idx->{'abc'}->{'title'} вместо $title = $rows[$idx->{'abc'}]->{'title'} Если заметная разница есть, то я могу это переделать. По потреблению памяти у номеров я преимуществ не вижу — ссылки это всегда 4 байта, число это минимум 4 байта. Но может быть в Perl есть накладные расходы на работу с ссылками. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 15:11 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Alibek B.в одних случаях нужно искать по id, в других по name, иногда еще по каким-то даннымОго, это уже не так просто. При таком раскладе, раз уж встал вопрос о лучше/хуже - то лучше какая-то база данных. Да хотя бы и на sqlite (если только множественные подключения не потребуются). Там вопросы индексирования и поиска всяко проработаны за много лет. ИМХО конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 16:22 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
У меня скрипт, который периодически запускается, забирает данные с веб-сервиса, обрабатывает их и выполняет определенные действия. То есть считывать данные скриптом мне нужно в любом случае, при этом после обработки эти данные уже не нужны и при следующем запуске мне все равно нужно будет считывать их заново. Мне кажется, что в данном случае смысла в локальной БД нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 17:50 |
|
Perl: лучше хранить номер элемента массива или сам элемент?
|
|||
---|---|---|---|
#18+
Разумеется, никоим образом не настаиваю на БД. При небольших объемах и не заметна будет польза от нее, если будет вообще. Смысл же, как писал выше, вижу не в хранении данных, а в использовании имеющихся там средств индексации. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 18:17 |
|
|
start [/forum/topic.php?fid=23&fpage=27&tid=1460396]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 460ms |
0 / 0 |