LINUX.ORG.RU

структура данных


0

0

Здравствуйте. Что посоветуете использовать в качестве кеша для домен->ип_адрес? В принципе, как я пониамю, выбор между массивом (упорядоченном ессно) и деревом. Запсей в базе будет порядка нескольких тысяч. Ессно следует учитывать и сложность реализации всего этого. Если же выбирать дерево, то какое лучше? Простое двоичное ?

anonymous

хэш-таблицы, но поскольку ключи строковые, нужно внимательно отнестись к выбору хэш-функции

phoenix ★★★★
()

Для параноидальной эффективности -- Если есть какая-либо корреляция между доменами, то можно попробовать B+ дерево по ключам. Если нет, то простая хэш-таблица.

На самом деле, несколько тысяч -- можно делать хэш на тысячу с простейшей хэш-функцией (типа +="%d" % <размер хэша> ) -- уверяю, проигрыш по оптимальному алгоритму составит, максимум, проценты...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Для параноидальной эффективности -- Если есть какая-либо корреляция между доменами, то можно попробовать B+ дерево по ключам. Если нет, то простая хэш-таблица.

aka std::map<HashValue, Object> paranoicHashTable;

anonymous
()
Ответ на: комментарий от anonymous

упс. Задумался и глупость ляпнул. std::map< DomainName, IP> paranoicTable;

Причем для DomainName должна быть определена операция "меньше". если это строки то подойдет обычный strcmp или string::operator <

anonymous
()
Ответ на: комментарий от anonymous

Забыл сказать, что пишу на Си :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.