![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Пообщался на ИРКе на эту тему - стало яснее. Приведу выдержки
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
http://ru.wikipedia.org/wiki/IRC - онлайн чат (древний как понятно что мамонта, но всё ещё актуальный).
Существует несколько серверов, предоставляющих IRC-чат. Самый крупный - freenode.net. На каждом сервере есть н-ное количество тематических каналов. На freenode - ~30000 каналов. Я там зависаю на #c++ (~1500 участников), #qt (~1000) и #boost (~800). Клиенты - Веб-клиент из браузера ( http://webchat.freenode.net/ ), Miranda, mIRC, QIP Infium + плагин для протокола IRC. Я пользую последний. Не самый удобный, но так я получаю 3 в 1 (jabber, twitter, IRC). -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
borisbn, очень познавательно
но дело в том, что я, около полугода назад, перестал пользоваться всеми мессенджерами. слишком много времени уходит на треп. |
|||
|
||||
| volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
borisbn, интересный тест, спасибо.
Безусловно, буст работает шустро, особенно на коротких значениях ключа, типа инт. Тест на студии вашего кода, полностью подтвердил ваши данные, (с поправкой того что мой комп, в ~1.5 раза медленее вашего Но относительные занчения были прмерно такие-же. Студийный стл::мап, надежно проигрывал, против буст-анордеред. Студийный stdext::hash_map оказался не на много лучше. И меня заинтересовало, насколько буст будет хорош, на длинных значениях. В качестве ключей использовал std::string с разной длиной. 4, 30 и 300. При длине 4, результаты полностью совпали с вашими. При длине ключа 30: hash_map, уже догнал, и даже немного перегнал boost
При длине ключа 300: boost отстает не только от hash_map, но даже и от std::map
Код, на котором я тестировал. (На 95% процентов, код скопиапщен у borisbn)
----------- Вывод: разные алгоритмы работы! И тип контейнера лучше подбирать на реальном, конкретном приложении. На коротких ключах буст анордеред, безусловно хорош. Даже очень хорош! Но на длинных, возможно стоит выбрать что-то другое... |
||||||
|
|||||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
volatile, очень интересно... Как раз следующим этапом я собирался сделать ключ из строки...
А вот результат Вашего нашего кода (со строкой), скомпилированного minGW 4.6.2 (вместо stdext::hash_map взят std::unordered_map)
Вывод: и компилятор тоже P.S. Недавно возился со студийным hash'ем... У меня получилось, что он игнорирует последний символ в строке, т.е. hash( "abcdefg0" ) == hash( "abcdefg1" )... м.б. это так и надо, а м.б. это глюк... Добавлено через 2 минуты и 37 секунд я так понял, что делить на [] и find теперь уже не нужно - это был глюк minGW 4.4.0 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Не совсем понял, как это игнорирует? hash_m ["abcdefg0"] = 1; hash_m ["abcdefg1"] = 2; hash_m ["abcdefg2"] = 3; std::cout << hash_m.size () << std::endl; Вывод 3, т.е разные хеши. Конкретно сами числа хешей тоже можно посмотреть, приватный метод _Hashval. Там для данных строк хеши разные (2,3,0) соответственно.
Да, там безусловно буст рулит. (Или стд не рулит?... |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
не... я смотрел непосредственно ф-цию std::tr1::hash. для приведённых Вами строк она выдаст одно и то же значение. потом, конечно, map это всё разрулит
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Щас, поставил брекпоинты, и посмотрел в дебагере значения хешей. Для приведенных строк, значения подсчитываются в следеющей процедуре (файл <xhash>)
Брякпоинты ставил на выходе функции. Конкретно значения хешей, для приведенных строк: _Val = 3802362189 _Val = 3802362188 _Val = 3802362191 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
FNV-1x в GCC этот алгоритм используется только для строковых типов. Добавлено @ 00:42 тут специализации: http://gcc.gnu.org/git/?p=gcc.git;a=blob;f...ab4ba92;hb=HEAD тут реализация мур-мур хеш и FNV-1: http://gcc.gnu.org/git/?p=gcc.git;a=blob;f...217bf36;hb=HEAD Это сообщение отредактировал(а) boostcoder - 12.11.2011, 00:42 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |