Question

J'ai une classe Message qui analyse les messages texte à l'aide de tables de recherche. Comme je reçois beaucoup de messages et que je crée et détruis un grand nombre d'objets, j'ai donc décidé de déclarer ces tables de recherche en tant que membres statiques pour éviter d'initialiser les mêmes tables avec les mêmes valeurs, encore et encore.

Est-ce la bonne approche ou la méthode C ++ la plus appropriée?

Merci.

Était-ce utile?

La solution

Cela semble être la bonne façon de le faire, même si le compilateur devrait l'optimiser. Avez-vous évalué votre application et déclarer les tables statiques accélère-t-il?

Notez également que si vous avez plusieurs tables de recherche volumineuses, les performances augmenteront, mais les tables seront conservées en mémoire tout le temps.

Autres conseils

Si vos classes de messages partagent des informations de recherche, il peut être intéressant de les résumer en une classe qui leur est propre afin qu’elles ne soient réellement initialisées qu’une seule fois.

Mais peu importe, les membres statiques de la classe sont définitivement la voie à suivre.

Il peut s’agir de variables de classe, c’est-à-dire statiques au niveau de la classe. De cette façon, ils sont disponibles pour les sous-classes, le cas échéant, et peut-être un peu plus visibles que s'ils étaient "masqués". en tant que variables locales statiques dans des méthodes individuelles.

Oui, tout va bien. Parfois c'est une bonne solution: une fonction statique qui ne sera créée qu'une fois. Vous pouvez également utiliser un objet singleton, mais son accessibilité est plus large.

Faites attention si vous avez une application multithread et que vos tables de correspondance contiennent un pointeur sur une autre donnée qui pourrait être détruite plus tôt que cette table.

L'utilisation d'un motif singleton fonctionnera également pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top