El Rendimiento De C++

Páginas: 14 (3362 palabras) Publicado: 27 de noviembre de 2012
Sobre el rendimiento
§1 Preámbulo

En algunos sentidos, C++ es un lenguaje de muy bajo nivel (incluso permite insertar instrucciones ensamblador directamente 4.10), por lo que hay ocasiones en que el programador necesita habérselas con cuestiones muy de detalle y conocer íntimamente el funcionamiento de los mecanismos subyacentes. Sobre todo si pretende entender mínimamente el porqué deciertas cosas y la terminología utilizada en los textos de programación. En este capítulo incluimos algunos conceptos que sin ser estrictamente cuestiones C++ sin duda le ayudarán en su tarea de habérselas con ese pequeño monstruo.
§2 Carga y descarga de funciones

Es importante conocer que C y C++ son lenguajes orientados a pila y estructurados alrededor del concepto de función; el funcionamientode ambos está íntimamente relacionado. Desde el punto de vista del programador, la invocación de una función es una sentencia del tipo:

func1();

aunque finalmente aparece como una llamada a la dirección donde se encuentra el recurso correspondiente. En ensamblador sería algo así:

call 0x4000000


En realidad, lo que ocurre en las tripas de la máquina cuando se invoca una función es unproceso bastante complejo, ya que la invocación, ejecución y retorno de una función no es solo cuestión de algoritmo. También hay datos de entrada bajo la forma de los argumentos "pasados" a la función (en base a los cuales el código realizará cierta computación 4.4.5) y datos de salida en forma del valor "devuelto".

Nota: observe que si el la llamada a funciones solo interviniese el código, elmecanismo de invocación quedaría reducido a un salto "jump" al punto de entrada del nuevo bloque de código.

El asunto es que, aparte de seguir el camino ("path") de ejecución adecuado, el programa necesita preparar el entorno de ejecución (datos) para el nuevo trozo de ejecutable y apuntar él mismo cierta información que le permita volver al punto de partida. Para entender el mecanismo, esimprescindible desterrar la idea del argumentos "pasados" o valores "devueltos" como datos que van y vienen desde/hacia la función invocante a/desde la función invocada.

La anterior es una imagen didáctica, diríamos de "alto nivel" y adecuada para una explicación básica de los mecanismos de invocación de funciones. Pero como decíamos al principio, C++ es en ciertos aspectos un lenguaje de bajonivel (pegado a la máquina) y si se quiere entender y manejar con éxito (en especial si se utilizan programas con módulos compilados en otros lenguajes), es fundamental una mirada más cercana al proceso.

En realidad no existe en absoluto algo como "paso" de argumentos (ni por valor ni por referencia). Realmente los datos (los argumentos actuales) de la función invocante se copian [6] a una zonade memoria que se crea ex-profeso en la pila ( 1.3.2), denominada marco de activación o marco de pila ("Stack frame").

Nota: por extensión también se denomina a veces registro de activación (aunque no debería decirse así). La razón es que la dirección de comienzo de esta zona queda almacenada un registro del procesador denominado por esta razón puntero de pila o SP ("Stack pointer"). Ver figura.

Como veremos a continuación, el marco de pila es un trozo de memoria en este área, que sirve como zona temporal de datos para uso de la función que entra en ejecución. En ella se almacenan los argumentos pasados a la función, sus variables locales y otros datos, como dirección de retorno a la rutina que efectuó la llamada, y estado de los registros en el momento de la invocación.

Nota: endeterminadas circunstancias ciertos argumentos pueden pasar a los registros del procesador, aunque no hay reglas fijas al respecto. Como en todo lo que en C++ se relaciona con el uso de los registros (register 4.1.8b), depende de las circunstancias y del procesador. Ver nota adjunta sobre uso de registros para paso de parámetros en BC++ ( 4.4.6bw1).


Por supuesto, toda esta información...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • C Mo Afecta La Falta De Sue O Al Rendimiento Diario
  • Rendimiento y otros
  • Rendimientos
  • Rendimientos
  • El Rendimiento
  • rendimiento
  • Rendimiento
  • Rendimiento

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS