Странный бенчмарк, странные либы (unordered_map vs. GLib hashtable)

Dec 29, 2014 14:42

Согласно common knowledge, код на C++ не медленнее кода на Си.

Недавно мне довелось разбираться с результатами странного бенчмарка: вставка 10M элементов в хеш таблицу, std::unordered_map vs. GLib hashtable, функции хеширования идентичные. Код на Си работает 4 секунды, плюсовая версия медленнее почти в два раза. WTF?

Read more... )

Leave a comment

Comments 2

zeux December 30 2014, 07:28:56 UTC
Ну это не "код медленнее" это "библиотека отличается".
А то иначе рекомендую например попробовать ifstream vs FILE* на Windows/OSX...

В glibc таблица простых следует правилу "ресайз примерно в 1.5 раза". Но используется вот так:

if ((hash_table->size >= 3 * hash_table->nnodes && \
hash_table->size > HASH_TABLE_MIN_SIZE) || \
(3 * hash_table->size <= hash_table->nnodes && \
hash_table->size < HASH_TABLE_MAX_SIZE ( ... )

Reply

mejedi December 30 2014, 08:07:54 UTC
Абсолютно согласен, что дело тут в библиотеках. Возможно, моя гипотеза неверна и надо было аккуратно разбираться до конца, с запуском под профайлером и прочей тяжелой артилерией.

Reply


Leave a comment

Up