Integração de mapeamento C ++ e desempenho de pesquisa e sobrecarga de armazenamento

Eu gostaria de armazenar um mapeamento de uminteger chave para umfloat valor na memória.

Eu tenho aproximadamente 130 milhões de chaves (e, consequentemente, 130 milhões de valores).

Meu foco está no desempenho da pesquisa - tenho que fazer muitos, muitos milhões de pesquisas.

A biblioteca C ++ STL tem ummap classe para matrizes associativas deste tipo. Eu tenho várias perguntas sobremap.

Qual é a sobrecarga de armazenamento demap para um conjunto de dados do tamanho mencionado acima? Como a sobrecarga de armazenamento é dimensionada, em geral, commap?

Parece que a estrutura de dados subjacente paramap é uma árvore binária equilibrada, vermelha e preta. Parece o mundo realdesempenho pois isso éO(log n) para inserção e recuperação.

MencionaO(1) para uma inserção sugerida. Minha entrada é pré-classificada, por isso acredito que devo fornecer uma dica para eventos de inserção. Como eu daria essa dica, usando os métodos listadosAqui?

Existe um contêiner STL que fornece melhor desempenho de pesquisa?

Existem outras estruturas de software livre publicamente disponíveis com uma classe de matriz associada que usa uma estrutura de dados subjacente que teria um desempenho melhor que o STL?map?

Se escrever minha própria classe contêiner forneceria um melhor desempenho de pesquisa, que estruturas de dados eu poderia pesquisar?

Eu estou usando o GCC 4 para esta tarefa, rodando em Linux ou Mac OS X.

Peço desculpas antecipadamente se estas são perguntas idiotas. Obrigado pelo seu conselho.

questionAnswers(8)

yourAnswerToTheQuestion