Pregunta

Tengo una clase de mensaje que analiza los mensajes de texto usando tablas de búsqueda. Recibo muchos mensajes y creo y destruyo muchos objetos, así que pensé en declarar esas tablas de búsqueda como miembros estáticos para evitar la inicialización de las mismas tablas con los mismos valores una y otra vez.

¿Es el enfoque correcto o hay una forma más apropiada de C ++?

Gracias.

¿Fue útil?

Solución

Esto suena como la forma correcta de hacerlo, aunque esperaría que el compilador optimice esto. ¿Ha comparado su aplicación y declara las tablas como estáticas la acelera?

También tenga en cuenta que si tiene muchas tablas de búsqueda grandes, el rendimiento aumentará, pero las tablas se mantendrán en la memoria todo el tiempo.

Otros consejos

Si sus clases de mensajes comparten información de búsqueda, puede valer la pena abstraer sus búsquedas estáticas en una clase propia para que realmente solo se inicialicen una vez.

Pero independientemente, los miembros de la clase estática son definitivamente el camino a seguir.

Podrían ser variables de clase, es decir, estáticas a nivel de clase. De esa manera, están disponibles para las subclases, si las hay, y tal vez un poco más visibles que si están "ocultas". como variables locales estáticas en métodos individuales.

Sí, todo bien. A veces es una buena solución: función estática que se creará solo una vez. También podría usar un objeto singleton, pero tiene una accesibilidad más amplia.

Tenga cuidado si tiene una aplicación multiproceso y si sus tablas de búsqueda contienen puntero a otros datos que podrían destruirse antes de esta tabla.

Usar un patrón singleton también funcionará para esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top