Повысьте :: multi_index. Быстрее решение? - PullRequest
1 голос
/ 04 марта 2012

Я вчера отправил вопрос, и решил его с помощью multi_map: Наличие составного ключа для карты хеша в c ++

Это работает как чудо, но проблема возникает, когдаdatasrt достаточно большой.

Размер моего набора данных составляет около 10 МБ, для вставки требуется + 350 сек. С упорядоченным индексом и 80 сек. С хешированным индексом (неупорядоченным).
Это довольно длительное время по сравнению с картой (парой,двойной) структура данных, которая заняла всего 25 сек.

У кого-нибудь есть идеи по улучшению скорости вычислений?Потребление памяти в порядке, но скорость действительно имеет значение для меня.

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

Добавление индексов к multi_index_container происходит по цене во время вставки: грубо говоря, если у вас есть четыре индекса, вставка выполняется так же медленно, как вставка в четыре разных одноиндексных карты (на самом деле это быстрее, как показывают ваши цифры, с 80 <4 * 25.) В вашем конкретном случае вы можете избавиться от последнего индекса: просто используйте составной ключевой материал в качестве первого индекса, поскольку он будет поддерживать как только lang1, так и запросы (lang1, lang2). </p>

0 голосов
/ 04 марта 2012

Рассматривали ли вы использование реальной базы данных, например SQLite ? Когда вы хотите иметь несколько индексов для элементов и более 10 миллионов, это, как правило, именно то, что вы ищете.

Если база данных на основе SQL недоступна, вы можете использовать базу данных не на основе SQL . Это не конкретная база данных, которая имеет значение; просто вы используете базу данных какой-то формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...