История изменений
Исправление AntonI, (текущая версия) :
Все оказалось банально:
sizeof(std::unordered_map<K, V>) == 56
(грррррр! 8 байт сэкономили, молодцы че). Дальше вот такая конструкция
std::vector<std::unordered_map<K, V> > table(omp_get_num_threads());
при совместном доступе из разных потоков встает колом потому что разные потоки ломятся в одну строку кэша.
bugfixer, спасибо!;-)
Исходная версия AntonI, :
Все оказалось банально:
sizeof(std::unordered_map<K, V>) == 56
(грррррр! 8 байт сэкономили, молодцы че). Дальше вот такая конструкция
std::vector<std::unordered_map<K, V> > table(omp_get_um_threads());
при совместном доступе из разных потоков встает колом потому что разные потоки ломятся в одну строку кэша.
bugfixer, спасибо!;-)