Practica 6

Objetivo del benchmark


Durante nuestro trabajo en la MASA un cientifico loco nos ha llamado a los servicios de informática:

-Servicios de informática de la MASA, digame.

-Hola, soy un científico, necesito un equipo que me haga muy eficientemente sumas de decimales, sumas de enteros y su escritura de cada suma en disco. Son más importantes las sumas de decimales, serán un 99% del total de los cálculos.

-Ya, si aquí todo el mundo pide... pero justifiqueme su necesidad, por que a JJ le gusta que las cosas estén bien justificadas.

-Queremos hacer unos cálculos, sumas de puntos de ejes de coordenadas X e Y, con una precisión de un decimal y cada uno de los resultados se escriben en disco.

-Bueno, ¿entonces todas las sumas son decimales no?

-No, los ".0" se cuentan como enteros, por eso como ya te digo hay un 1% de sumas de enteros. Creemos que con esto hallaremos si existe agua en Marte.

-Pues para esta tarde te lo tengo que a mi me gusta mucho el agua.


De modo que tenemos el objetivo de encontrar, entre varios equipos que tenemos disponibles, el que mejor hará este trabajo. Para ello elaboramos un Benchmark con el que obtener, de cada uno, el que mejor hará el trabajo requerido.

Métricas a usar


Vamos a usar 2 métricas:
  • Cálculos por milisegundo (Para los casos de cálculos de sumas de enteros y de decimales)
  • Caracteres por milisegundo (para el caso de escritura en disco)

Sobre el benchmark


El benchmark va a devolver tres resultados, siendo estos:

  • Cálculos de enteros por cada milisegundo: Esto se realiza calculando el tiempo total en segundos que tardan en realizarse 10000000000 sumas de números enteros, posteriormente esto se pasa a la unidad métrica que tenemos asignada siendo el resultado aproximado.

  • Cálculos de números con decimales por cada milisegundo: Esto se realiza calculando el tiempo total en segundos que tardan en realizarse 10000000000 sumas de números con decimales, posteriormente esto se pasa a la unidad métrica que tenemos asignada siendo el resultado aproximado.

  • Caracteres escritos en disco por milisegundo: Esto se realiza calculando el tiempo total en segundos que tardan en escribirse 30000000000 caracteres en un archivo ¡Cuidado, el archivo es de 2Gb y no se borra automágicamente!, posteriormente esto se pasa a la unidad métrica que tenemos asignada siendo el resultado aproximado.


El código fuente del benchmark se puede encontrar aquí
NOTA: Se recomienda no abrir el fichero incluido archivo.cpp por que por su tamaño colgaría cualquier editor/lector, este incluye la declaración de la cadena de caracteres inicial para la escritura en disco en bloques grandes.

La linea de comandos para compilar y ejecutar sería:
g++ benchmark.cpp -o benchmark
./benchmark

Resultados



Equipo 1


Benchmark
CPU Enteros: Cálculos/ms: 208333
CPU Decimales: Cálculos/ms: 204081
DISCO Escritura: Caracteres/ms: 211267


Equipo 2


Benchmark
CPU Enteros: Cálculos/ms: 303030
CPU Decimales: Cálculos/ms: 238095
DISCO Escritura: Caracteres/ms: 312500


Equipo 3


Benchmark
CPU Enteros: Cálculos/ms: 294117
CPU Decimales: Cálculos/ms: 232558
DISCO Escritura: Caracteres/ms: 731707


Suponemos que, por cada suma que se realiza, se escriben 5 caracteres (3 enteros + el punto separador + 1 decimal) en ese caso. De modo que todas las medidas de escritura en disco serian de 5 caracteres por milisegundo:
  • Equipo 1: 42253,4 (5Caracteres/ms)
  • Equipo 2: 62500 (5Caracteres/ms)
  • Equipo 3: 146341,4 (5Caracteres/ms)


Análisis de Resultados








E1E2E3IE1IE2IE3
CPU Enteros20833330303029411711,451,41
CPU Decimales20408123809523255811,161,11
Disco Escritura42253,462500146341,411,473,46
Media geométrica11,351,75



Observamos que se da la característica en todos los equipos de que la velocidad de escritura limita los cálculos, por tanto en nuestra conclusión para este análisis obviaremos el factor de CPU para simplemente determinar qué equipo es el más adecuado determinado únicamente por la capacidad de escritura.








El sistema base tiene un índice 1 y el mejor sistema es el Equipo 3 con índice de 3,46 para el objetivo planteado.

0 comentarios