Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Eficiencia de C++ en estos casos...

Estas en el tema de Eficiencia de C++ en estos casos... en el foro de C/C++ en Foros del Web. Bueno. AL programar con C++, me surgio una duda. Si tu creas una clase que funciones miembro que llaman otras y otras y otras, si ...
  #1 (permalink)  
Antiguo 29/04/2006, 10:09
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
Eficiencia de C++ en estos casos...

Bueno. AL programar con C++, me surgio una duda.
Si tu creas una clase que funciones miembro que llaman otras y otras y otras, si tu le dices al copilador que optimice, te reduce el numero de llamadas? Porque en C yo llegaba a hacer todo un proceso en una sola funcion gigante, y pues eso va contra la programacion estructurada y contra la POO, asi que ahora intento dividir mejor el proceso en unidades que se repitan y asi hacer el codigo muchisimo mas legible, pero usando tantas funciones, no se pierde eficiencia, es decir, velocidad? Porque en el peoycto que hago mi prioridad es la velocidad.

SAludos
  #2 (permalink)  
Antiguo 29/04/2006, 16:23
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Cada metodo al que llamas agrega un cierto proceso (copiar variables en la pila, valores de retorno, etc). Para optimizar eta perdida de procesa, en C++ se hace uso del operador "inline", lo que hace que cuando el compilador compila un programa, en ves de hacer todo el proceso de llamada al metodo, copia el contenido del metodo en el lugar de llamada, optimizando el programa.

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 29/04/2006, 17:33
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
La pérdida es insignificante si el sistema no es crítico.

Salvo que estés hablando de engines 3D, donde el sistema permite saltarse ciertos anillos de seguridad para llegar al hardware lo más rápidamente posible, lo demás da igual.

Además, los compiladores hacen lo que ha expuesto TolaWare muy bien.

No creas que por escribir todo el código en 1 función en 1 línea va a ir mucho más rápido.
  #4 (permalink)  
Antiguo 29/04/2006, 18:39
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
Bueno, solo una pregunta un poco boba.
El inline debe ir en la declaracion de la funcion, en la definicion o en la llamada?

Saludos
  #5 (permalink)  
Antiguo 29/04/2006, 19:46
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Si escribes el cuerpo del metodo en la misma definicion de la clase, entonces se transforma en inline automaticamente (no hace falta especificarlo).

Si en la clase solo delcaras el metodo, y lo especificas (al metodo) en otro lado, entonces tenes que agregarle la palabra inline al principio de la definicion.

por ejemplo:

Código:
inline void clase::metodo(){
     // codigo del metodo
}
En la llamada a la funcion no podes colocarle el inline.

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:14.