Este repositorio contiene una pipeline que se encarga de realizar gráficas comparativas de medidas de rendimiento y seguridad en compiladores modernos, en concreto de g++, clang++ y rustc. Además ha sido mi TFG presentado en la EINA, Universidad de Zaragoza.
- Pipeline.sh: Es el programa principal.
- scripts: Es la carpeta que contiene todos los scripts que se ejecutarán para poder realizar la ejecución completa.
- programs: Es la carpeta donde están los programas de prueba o donde se deberían añadir nuevos para poder comparar.
- Dockerfile y docker-compose.yml: Archivos para poder desplegar la aplicación en docker si no se desea usar un sistema debian nativo.
Tener un programa con el mismo nombre que sea cpp y rs.
-
Haber instalado las siguientes dependencias en un sistema basado en debian: build-essential, clang, llvm, curl, python3, python3-pip, jq, bc, time, checksec, git, aha, wkhtmltopdf, texlive-latex-base, texlive-latex-extra, texlive-fonts-recommended, dvipng, cm-super, ghostscript, fonts-liberation, fonts-freefont-otf, binutils-dev, libcap-dev, libseccomp-dev, libasan8, libubsan1, libclang-rt-dev, python3-dev
-
Tener instalado los compiladores de c++, clang++ y rustc (en su version nightly).
-
Tener las siguientes librerias de python instaladas: matplotlib, pandas, seaborn, numpy, scipy, statsmodels.
-
Tener configuradas las fuentes para matplotlib (mirar Dockerfile si hay dudas).
sudo apt install build-essential clang llvm curl python3 python3-pip jq bc time checksec git aha texlive-latex-base texlive-latex-extra texlive-fonts-recommended dvipng cm-super ghostscript fonts-liberation fonts-freefont-otf binutils-dev libcap-dev libseccomp-dev libasan8 libubsan1 libclang-rt-dev python3-devNota para
wkhtmltopdf: Si usas distribuciones recientes (como Kali Linux, Debian 13 o Ubuntu 24.04),wkhtmltopdfya no está en los repositorios oficiales. Puedes instalarlo descargando el paquete.debmanualmente:wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb sudo apt install ./wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
pip3 install -r requirements.txt- Tener instalado docker y docker-compose.
- Poseer al menos 3 gigas para la imagen de docker.
Clona el repositorio:
git clone https://github.com/DonJulve/Compilers-Benchmark-ComparatorNota:
- nombre_del_programa es el nombre del programa a usar para medir sin extensión, osea si tengo suma.cpp y suma.rs pondría solo suma.
- numero_de_ejecuciones es opcional y por defecto es 1, se usa para poder hacer una media de las ejecuciones.
./Pipeline <nombre_del_programa> [<numero_de_ejecuciones>]# Descargar la imagen pre-construida (opcional, docker-compose la bajará si no la tienes)
docker-compose pull
# Levantar contenedores
docker-compose up -d
# Ejecutar el benchmark
docker-compose run benchmark <nombre_del_programa> [<numero_de_ejecuciones>]Eliminar imagen
docker-compose down
docker rmi compiler-benchmark- Shell: Lenguaje de scripting usado para poder ejecutar grandes cantidades de comandos para compilación, ejecución y medición.
- Python: Lenguaje usado para generar las gráficas y tratar los datos de las mediciones realizadas.
- Docker: Herramienta de contenedores utilizada para empaquetar y distribuir la aplicación.
- C++ y rust: Ambos lenguajes no están directamente presentes en el proyecto pero se ha estudiado su comportamiento y sus compiladores para poder realizar el proyecto.