#Comparación de Ordenamiento
Los algoritmos comparados fueron:
- counting sort
- quick sort
- insertion sort
- bitonic sort
- cocktail shaker sort
- qsort (No confundir con quick sort, este es el algoritmo de ordenamiento de la libreria standard de C)
Cada uno de estos algoritmos esta implementado en C. Hay un archivo .c para cada
uno con su respectivo nombre. Para generar los ejecutables basta con ejecutar
make
en este directorio.
Los ejecutables generados son:
- countsort
- insertionsort
- quicksort
- qsort_gcc
- shakersort
- bitonicsort
Cada uno de estos programas en C lee el archivo num.txt
y lo ordena con su
correspondiente algoritmo. Si se le pasa el parametro --summary
se imprime
un pequeño resumen del ordenamiento. Con el parametro --verbose
se imprime
toda la lista ordenada.
Las pruebas estan implementadas en javascript en el archivo benchmark.js
. se
lo puede ejecutar con node.js usando:
node benchmark.js
Al correr benchmark ocurre lo siguiente:
- se ejecuta
make
para compilar los archivos. Se generan los ejecutables para cada algoritmo, y el denewlist
que genera un archivonum.txt
con 10 millones de numeros aleatorios. - Al recibir la señal de que
make
termino, se ejecutanewlist
- Al recibir la señal de que
newlist
termino, se ejecuta aleatoriamente cada programa correspondiente a cada algoritmo registrando los tiempos. El tiempo se lo mide desde que se llama a a ejecutar el proceso has que este termina con código 0.
Los pasos 2 y 3 se repiten 10 veces y finalmente se calcula el promedio para cada algoritmo.
Para guardar los resultados en un archivo results.csv
puede ejecutar:
node benchmark.js -s >> results.csv
Para ejecutar los tests con arreglos de tamaño diferente a 10 millones se puede
modificar la constante LISTSIZE
en el archivo AlUtils.h
. despues de hacer
make clean
, benchmark.js
realizará las pruebas con el nuevo tamaño.
Para cambiar el numero de iteraciones necesarias para sacar el promedio. En el
archivo benchmark.js
se puede modificar manualmente la constante iterations
que originalmente tiene un valor de 10.