История изменений
Исправление
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, спасибо!;-)