Гость Опубликовано 5 февраля, 2003 Жалоба Поделиться Опубликовано 5 февраля, 2003 subj Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 5 февраля, 2003 Жалоба Поделиться Опубликовано 5 февраля, 2003 А что собственно нужно? Если именно что hash tables, то GDBM или Berkeley DB. Кроме того, в glibc есть собственные функции -- но они только in-memory; кроме того, если возможность работы с несколькими хэш-таблицами -- это GNU extension. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 5 февраля, 2003 Жалоба Поделиться Опубликовано 5 февраля, 2003 нужно быстро отыскивать элемент в списке, есть он там или нет. Сам список в памяти помещяется, как будет с хешем пока не знаю. Что посоветуете? А какие фкнкции в glibc? в GNU extension? где о них прочесть? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 5 февраля, 2003 Жалоба Поделиться Опубликовано 5 февраля, 2003 1) Если сам список помещается в памяти, то и хэш тоже 2) Ну читать-то нужно то что всегда -- например, info libc. Есть такая функция hsearch -- она стандартна, но позволяет работать только с одним хэшем на всю программу. Только в glibc есть функция hsearch_r которая позволяет работать с несколькими хэшами. Соответсвенно Berkley DB 1.85 описана в man dbopen и man hash А GDBM -- в info gdbm Но! По-моему, если нужно работать только с памятью, то не проще ли написать все самому? Собственно код хэш-функции можно взять (чтоб велосипед не изобретать), например из заголовочного файла hash.h в Objective C Или можно покопать исходники Berkley DB. Или можно посмотреть в книге "Компиляторы". Или в книге "Искусство программирования" Д. Кнута Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 6 февраля, 2003 Жалоба Поделиться Опубликовано 6 февраля, 2003 А не подскажите, что из перечисленого работает быстрее? Список приблизительно из 50тыс. строк разной длинны (5-100 символов) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 6 февраля, 2003 Жалоба Поделиться Опубликовано 6 февраля, 2003 Гм. Вряд ли это вообще можно сказать заранее. Дело-то в том, что эффективность хэша зависит не от количества данных, а от качества. А в среднем все это сопоставимые по скорости решения. Кстати, если у вас список постоянный, то можно попробовать gperf. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 6 февраля, 2003 Жалоба Поделиться Опубликовано 6 февраля, 2003 пытаюсь попробовать gperf, по идее штука подходящяя, хотя сложно понять как поведет себя сгенерированный ей код в случае изменения списка данных.. да вот никак не разберусь, в каком формате ей подсунуть данные, не подскажите? у меня список: ключь=значение ключь=значение .... нужно соотвественно по ключу получать будет значение или undex Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.