Эффективный поиск бимапа

у меня есть bimap длиной ок. 280000, и я ищу это bimap по крайней мере, 18 миллионов раз по стоимости. Минимальный пример bimap что у меня есть со мной, дано ниже;

#include <string>
#include <iostream>
#include <utility>
#include <boost/bimap.hpp>
#include <boost/bimap/unordered_set_of.hpp>
#include <boost/bimap/unordered_multiset_of.hpp>

namespace bimaps = boost::bimaps;
typedef boost::bimap<bimaps::unordered_set_of<unsigned long int>,
bimaps::unordered_multiset_of<unsigned long int > > bimap_reference;
typedef bimap_reference::value_type position;
bimap_reference numbers;

int main()
{
numbers.insert(position(123456, 100000)); // inserting in the bimap
numbers.insert(position(234567, 80000));
numbers.insert(position(345678, 100000));
numbers.insert(position(456789, 80000));

using ritr = bimap_reference::right_const_iterator;
std::pair<ritr, ritr> range = numbers.right.equal_range(80000);
auto itr = range.first;
std::cout<<"first: "<<itr->first<<std::endl;
if(itr != numbers.right.end() && itr->second ==80000){
for (itr = range.first; itr != range.second; ++itr)
{
std::cout<<"numbers:"<<itr->second<<"<->"<<itr->first<<std::endl;
}
}
else {
std::cout<<"Not found:"<<std::endl;
}
return 0;
}

Поиски bimap 18 миллионов раз занимает около 7 секунд. Я хотел бы знать, как улучшить время поиска.
Другой, у меня есть unordered_set_of<> а также unordered_multiset_of<>, который помогает мне создать bimap быстрее, чем если я использую set_of<> а также multiset_of<>время поиска составляет ок. То же самое в обоих случаях. Я также хочу увеличить длину bimap до 170 миллионов, а поиск будет ок. 500 миллионов раз. Итак, как я могу улучшить время поиска?

unordered_map<> это не решение, потому что я хочу двунаправленный доступ.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …