Prestaproc

Páginas: 7 (1672 palabras) Publicado: 31 de octubre de 2015
Capítulo 4. Compilación, ejecución,
interpretación, rendimiento.
4.1. Objetivos
Introducir las diferencias y semejanzas entre Java y C.
Comprender el funcionamiento de diversas máquinas virtuales que se ven en un ordenador,
incluyendo las definidas por lenguajes de alto nivel traducidos (C y Java), interpretados (Bash), el
nivel máquina convencional, el nivel del sistema operativo y el nivel dela máquina virtual Java.
Así mismo observar el rendimiento de programas funcionando en distintos entornos de compilación
y ejecución.

4.2. Documentación de las transparencias
Las transparencias relevantes para realizar esta práctica son:
- Páginas 1-17 de las transparencias de C

4.3. Examen de programas en C y sus equivalentes en
Java
Estudie los programas siguientes, comparando las versiones enC y en Java: nada.c:

#include
#include
int main (int argc, char* argv[]) {
int i, N;
N = atoi(argv[1]);
for (i=0; i printf("i=%d\n", i);
exit(0);
}

Nada.java:

public class Nada {
public static void main (String[] args) {
int i, N;
N= Integer.parseInt(args[0]);
for (i=0; i System.out.println("i="+i);
}
}

1

Capítulo 4. Compilación, ejecución,interpretación, rendimiento.

rutinas.c:

#include
#include
int rutina(int p) { return p+p; };
int main (int argc, char* argv[]) {
int i, N, r=0;
N = atoi(argv[1]);
for (i=0; i r= rutina(i);
printf("i=%d,r=%d\n", i,r);
exit(0);
}

y Rutinas.java:

public class Rutinas {
static int rutina(int p) { return p+p; };
public static void main(String[] args) {
int i, N, r=0;
N=Integer.parseInt(args[0]);
for (i=0; i r= rutina(i);
System.out.println("i="+i+",r="+r);
}
}

Todos ellos toman como argumento una cadena de caracteres numérica que utilizan para determinar
el número de vueltas de un bucle. Si no se pasa la cadena de caracteres numérica, en los programas
en C se producirá una violación de memoria, y en los programas en Java una excepción por índice
incorrecto.Finalmente escriben uno o dos valores. Los programas en C además informan al sistema
operativo que terminan con éxito (exit(0)); ello no es necesario en los programas en Java, que
automáticamente entregan un cero al sistema operativo si no terminan por excepción.

4.4. Compilación, ejecución y medida de tiempos
4.4.1. C sin optimizar
Compile y monte (con gcc programa.c -o programa ) los programas en Cy ejecútelos (con
./programa vueltas 1). Busque un valor de vueltas que haga que los programas duren varios
segundos2. En lugar de usar su reloj de pulsera para medir el tiempo, utilice la orden intrínseca de la
shell time:
time ./programa vueltas

2

Capítulo 4. Compilación, ejecución, interpretación, rendimiento.

Verá que el tiempo transcurrido (real) es algo mayor que el tiempo de procesadorgastado en modo
usuario (user), y que el tiempo de procesador gastado dentro del núcleo (sys) es despreciable. Si la
máquina está cargada, el tiempo transcurrido será bastante mayor que la suma de usuario y sistema,
ya que el procesador hay que repartirlo con otros procesos. Para los dos programas determine la
duración de cada pasada por el bucle. Restando la duración de la pasada en el buclevacío podemos
determinar el tiempo atribuible a las secuencias de instrucciones necesarias para llamar y retornar de
un procedimiento sencillo.

4.4.2. C optimizado
Compile los programas anteriores optimizando (con la opción -O) y obtenga las medidas anteriores3.
Verá mejoras sustanciales y probablemente sorprendentes. En particular, el optimizador del
compilador de C podría ser tan inteligente quedecida que el bucle computacionalmente no sirve para
nada y lo elimine, con lo que el tiempo observado es nulo. Si no se elimina el bucle, se mejora
mucho su eficiencia. Con la opción -O2 o -O3 seguro que elimina el bucle.

4.4.3. Java sin optimizar
Compile los programas Java para la máquina virtual Java (con javac Clase.java ). Interprételos
seguidamente con una máquina virtual Java (con java...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS