Pergunta

Eu tenho uma classe mensagem que analisa mensagens de texto usando tabelas de pesquisa. Eu recebo um monte de mensagens e criar e destruir um monte de objetos, então eu pensei que eu declarar essas tabelas de pesquisa como membros estáticos para evitar inicializar as mesmas tabelas com os mesmos valores novamente e novamente.

É a abordagem correta ou não há forma mais adequada C ++?

Graças.

Foi útil?

Solução

Isso soa como o caminho certo para fazê-lo, embora eu esperaria o compilador para otimizar isso. Você já comparou sua aplicação e não declarar as tabelas como velocidade estática-lo?

Observe também que se você tiver muitas tabelas de pesquisa de grande porte, o desempenho vai aumentar, mas as tabelas será espera na memória o tempo todo.

Outras dicas

Se suas classes de mensagens compartilhar informações de pesquisa que pode valer a pena abstrair suas pesquisas estáticos em uma classe própria, para que eles realmente só são inicializados uma vez.

Mas, independentemente, membros da classe estática são definitivamente o caminho a percorrer.

Eles podem ser variáveis ??de classe, ou seja estáticas no nível de classe. Dessa forma, eles estão disponíveis para subclasses, se houver, e talvez um pouco mais visível do que se "escondido" como variáveis ??locais estáticas nos métodos individuais.

Sim, tudo ok. Às vezes é bom solução: static função que irá criar apenas uma vez. Além disso, você poderia usar objeto singleton, mas tem mais ampla acessibilidade.

Tenha cuidado se você tiver aplicação multi-threaded e se seus lookup-tabelas contêm ponteiro para outro dados que poderiam ser destruídos mais cedo do que esta tabela.

Usando um padrão Singleton também irá trabalhar para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top