Хеш vs. список

| Нет комментариев

Структура с именованными полями удобнее простых массивов, когда в ней содержатся данные разных типов. Собственно, члены-данные классов в ООП этим и ценны.

В перле (пятой версии) ООП сделан на хешах и поэтому не дает никаких преимуществ по скорости обращения к отдельным элементам по сравнению с обычными хешами.

Иногда возникают задачи, в которых необходимо собирать большие списки некоторых объектов, но оптимизторская жаба заставляет применять списки и запоминать порядок элементов.

Вот пример. Нужно собрать результаты поиска по сайту. Каждый результат — это пара из ссылки и заголовка.

Очень удобно было бы (предположив, что $search_item — это объект типа SearchItem) написать

push @result, $search_item;

Чуть менее удобно, но не менее наглядно, создавать безымянные хеши:

push @result, {
    url => $url,
    title => $title, 
};

В реальности же приходится делать списки:

push @result, [
    $uri,
    $title
]
;

Теперь не обидно создавать большие списки таких безымянных массивов, не беспокоясь о неоптимальном расходе памяти на ключи.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 30.10.2009 23:27. Автор — ash.

Предыдущая запись — «Мой проект», часть 1

Следующая запись — «Мой проект», часть 2

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.