Me pregunto si las clases "todopoderosas" en C++ y cómo lo hacen realmente impactan en el rendimiento.C++: impacto en el rendimiento de las clases GRANDES (con un montón de código)
Si tengo, por ejemplo, una clase Punto, con solo uint x; uint y; como datos, y han definido prácticamente todo lo que las matemáticas pueden hacer hasta cierto punto como métodos. Algunos de esos métodos pueden ser enormes. (copia-) los constructores no hacen nada más que inicializar los dos miembros de datos.
class Point
{
int mx; int my;
Point(int x, int y):mx(x),my(y){};
Point(const Point& other):mx(other.x),my(other.y){};
// .... HUGE number of methods....
};
Ahora. Cargué una imagen grande y creo un Punto para cada píxel, rellenelos en un vector y use ellos. (digamos, todos los métodos se llaman una vez) ¡Esto solo es un ejemplo estúpido!
¿Sería más lento que la misma clase sin los métodos pero con muchas funciones de utilidad? ¡No estoy hablando de funciones virtuales de ninguna manera!
mi motivación para esto: a menudo me encuentro escribiendo clases agradables y relativamente potentes, pero cuando tengo para inicializar/usar un montón de ellos, como en el ejemplo anterior, me pongo nervioso. Creo que no debería.
lo que creo que sé es:
- Métodos existe sólo una vez en la memoria. (optimizaciones a un lado)
- La asignación solo tiene lugar para los datos miembros, y son lo único copiados.
Así que no debería importar. ¿Me estoy perdiendo de algo?
ver también: http: // stackoverflow.com/questions/648647/in-c-where-in-memory-are-class-functions-put –