powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: лучше хранить номер элемента массива или сам элемент?
8 сообщений из 8, страница 1 из 1
Perl: лучше хранить номер элемента массива или сам элемент?
    #39587558
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив хешей:
@rows = [{'id'=>1, 'name'=>'abc', ...}, {'id'=>2, 'name'=>'def', ...}, ... ]

Для быстрого поиска в этой массиве я делаю индекс:
$idx = {'abc'=>$rows[0], 'def'=>$rows[1], ...}

Или лучше его делать таким?
$idx = {'abc'=>0, 'def'=>1, ...}
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592583
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

а поиск по имени или содержимому?
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592587
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "по содержимому"?
Мне нужно находить элемент по name, значения уникальны.
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592754
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Напрашивается хранение данных в виде хеша 'уникальное_имя'=>какие-то_данные
Отдельный индекс не нужен, если только не потребуется поиск по данным.
Не годится?
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592827
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск требуется, у меня два индекса (в одних случаях нужно искать по id, в других по name, иногда еще по каким-то данным). Ну и еще есть некоторый в профит в том, что сохраняется порядок записей (которые я получаю в JSON с веб-сервиса).
Сейчас я храню сам элемент, это (как мне кажется) несколько упрощает работу с данными:
$title = $idx->{'abc'}->{'title'}
вместо
$title = $rows[$idx->{'abc'}]->{'title'}

Если заметная разница есть, то я могу это переделать.
По потреблению памяти у номеров я преимуществ не вижу — ссылки это всегда 4 байта, число это минимум 4 байта.
Но может быть в Perl есть накладные расходы на работу с ссылками.
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592849
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.в одних случаях нужно искать по id, в других по name, иногда еще по каким-то даннымОго, это уже не так просто. При таком раскладе, раз уж встал вопрос о лучше/хуже - то лучше какая-то база данных. Да хотя бы и на sqlite (если только множественные подключения не потребуются). Там вопросы индексирования и поиска всяко проработаны за много лет. ИМХО конечно.
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592916
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня скрипт, который периодически запускается, забирает данные с веб-сервиса, обрабатывает их и выполняет определенные действия.
То есть считывать данные скриптом мне нужно в любом случае, при этом после обработки эти данные уже не нужны и при следующем запуске мне все равно нужно будет считывать их заново.
Мне кажется, что в данном случае смысла в локальной БД нет.
...
Рейтинг: 0 / 0
Perl: лучше хранить номер элемента массива или сам элемент?
    #39592934
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется, никоим образом не настаиваю на БД. При небольших объемах и не заметна будет польза от нее, если будет вообще.
Смысл же, как писал выше, вижу не в хранении данных, а в использовании имеющихся там средств индексации.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: лучше хранить номер элемента массива или сам элемент?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]