Está en la página 1de 5

Actividad: Implementación del Cálculo del Factorial con Hilos en Java

Alumno: Erika Ma. de la Vega Araiza


Docente: Manuel A Suarez Amendola

Informe de Actividad
1. Introducción.
En esta práctica haremos una pequeña implementación para calcular el
factorial de manera secuencial sin multihilos y con multihilos (2, 4, 8,16 y 32
hilos), una vez hecho esto se hará una comparación entre los tiempos de
ejecución que se obtuvieron por medio de multihilos, se trabajara en un
ambiente de trabajo en AWS Educate Cloud9 utilizando una instancia EC2
con 1 vCPU y otra con 2 vCPU

2. Objetivo.
Tendremos como objetivo la implementación del cálculo factorial de forma
secuencial y sin usar multihilos,y otra implementación en la que se utilizan los
multihilos; estos se utilizan para dividir los procesos y que no haya una
saturación en ellos.
Se medirá el tiempo de los diferentes ambientes de trabajo, tanto local como
virtual y por último estos resultados se podrán observar de mejor manera al
momento de elaborar las gráficas, se podrá apreciar las diferencias de tiempo
que se tuvieron

3. Descripción de Actividades.
3.1. Descripción del ambiente de trabajo (características
de los ambientes de ejecución).
Mi entorno de ambiente local cuenta con un procesador i7, una
memoria RAM de 4 GB, un sistema operativo de Windows 10, 6
núcleos y 1TB de Disco Duro, no tuve problemas al momento de
ejecutar el programa.

En los entornos de desarrollo virtuales cuentan con las siguientes


características:
● 1 vCPU, cuenta con 1 GiB de RAM
● 2 vCPU, cuenta con 2 GiB de RAM
Cabe resaltar que en ambos ambientes de trabajo se trabajara en
Ubuntu Server 18.04 LTS 

3.2. Descripción de Actividades.


Desarrollamos un programa para hallar el factorial de un número, una
parte será sin utilizar hilos y en la otra se usará un número de hilos, en
este caso será: 2, 4, 8, 16 y 32. Se nos proporcionó un código base en
el que ya había una pequeña implementación del factorial utilizando
sólo 2 hilos, como ya había mencionado anteriormente, nuestro trabajo
es crear más hilos e ir dividiendo el proceso, al estar investigando me
di cuenta de que la gran mayoría creaba los hilos de manera manual,
me guie en de varios videos y documentación para poder implementar
la función de multihilos

3.3. Problemas encontrados y su solución.


Al momento de trabajar con la variable int, y hacer una prueba con un
número grande hubo un desbordamiento, así que se cambió por el tipo
de variable BigInteger. Otro problema que se tuvo fue hacer que los
hilos se dividieran para poder realizar el factorial del número, al estar
investigando vi que todos crean sus hilos y casi no habia informacion
de hacer los hilos de manera dinámica

4. Resultados obtenidos.
4.1. Tiempos de ejecución.
CPU local
Tiempo Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact.
1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Secuencial 0.001 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002

2 hilos 0.01 0.026 0.039 0.051 0.07 0.087 0.105 0.124 0.153 0.175

4 hilos 0.008 0.025 0.033 0.043 0.056 0.072 0.084 0.098 0.118 0.138

8 hilos 0.007 0.024 0.033 0.045 0.058 0.07 0.084 0.104 0.125 0.148

16 hilos 0.009 0.02 0.029 0.042 0.057 0.072 0.087 0.104 0.124 0.142
32 hilos 0.01 0.027 0.035 0.045 0.058 0.08 0.107 0.138 0.176 0.211

1 vCPU

Tiempo Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact.
1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Secuencial 0.025 0.066 0.101 0.13 0.159 0.23 0.324 0.404 0.495 0.581

2 hilos 0.027 0.062 0.1 0.128 0.153 0.23 0.319 0.398 0.489 0.578

4 hilos 0.026 0.062 0.101 0.129 0.156 0.227 0.323 0.408 0.492 0.586

8 hilos 0.03 0.064 0.103 0.128 0.159 0.224 0.319 0.403 0.487 0.575

16 hilos 0.026 0.061 0.103 0.13 0.152 0.229 0.322 0.413 0.501 0.595

32 hilos 0.026 0.06 0.102 0.132 0.159 0.227 0.313 0.4 0.488 0.582

2 vCPU

Tiempo Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact. Fact.
1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Secuencial 0.00 0.001 0.003 0.003 0.003 0.004 0.004 0.004 0.004 0.004

2 hilos 0.0 0.002 0.004 0.005 0.005 0.005 0.006 0.006 0.006 0.007

4 hilos 0.0 0.001 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002

8 hilos 0.0 0.001 0.003 0.003 0.003 0.003 0.004 0.004 0.004 0.004

16 hilos 0.0 0.002 0.003 0.004 0.004 0.004 0.004 0.004 0.004 0.004

32 hilos 0.0 0.001 0.003 0.003 0.004 0.004 0.004 0.004 0.005 0.005
4.2. Gráficas comparativas.
5. Conclusiones.
Podemos decir que se cumplieron satisfactoriamente los objetivos
planteados, además se hizo una retroalimentación de la parte teórica que se
nos proporcionó durante clase y con el material de apoyo. También nos
ayudó para indagar más acerca de la creación de hilos y sus aplicaciones, ya
que con los problemas que se nos presentaron nos hizo investigar más
acerca del origen de dichos problemas; el hecho de trabajar en un ambiente
de trabajo virtual, nos sirvió de mucho para conocer y comparar los tiempos,
quizá si nosotros tenemos un equipo local que presente fallas o no sea tan
óptimo pues tenemos la opción de trabajar virtualmente.

También podría gustarte