Skip to content

Latest commit

 

History

History

benchmarks

benchmarks

Dans le but de comparer les performances des implémentations de nos bibliothèques C++ et Python, nous souhaitons exécuter des tests de performances sur le fichier input.txt qui contient une longue chaîne de caractère aléatoire. Nous pourrons ainsi constater quelle implémentation est la plus efficace.

Requis

Installation des dépendances système

# MAJ des paquets systèmes
sudo apt-get update
# Instllation des dépendances
sudo apt-get install ninja-build cmake build-essential python3 python3-venv

Sous-modules

Les sous-modules de ce projet doivent être installés avant de pouvoir compiler cette bibliothèque.

Les sous-modules peuvent être obtenus avec les commandes suivantes:

# Initialisation des sous-modules
git submodule init
# MAJ de tous les sous-modules récursivement
git submodule update --recursive

Compilation du benchmark de la bibliothèque C++

À partir du répertoire courant (library/benchmarks):

# Création du répertoire build
mkdir build
# Aller dans le répertoire build
cd build
# Executer cmake
cmake ..
# Compilation du benchmark C++
make

Création des environnements (venv) pour les benchmarks Python

Dans le répertoire library/benchmarks:

# Creation de la venv pour pycount
python3 -m venv venv-pycount
# Création de la venv pour cppcount-pybind11 (bindings)
python3 -m venv venv-cppcount-pybind11

Exécution du benchmark pour bibliothèque C++

Dans le répertoire library/benchmarks/build:

    ./benchmark_cppcount

L'exécution devrait vous donner une sortie similaire à ceci qui représente le temps de traitement du fichier input.txt :

benchmarkCountCharacters: 0.0106488 s
benchmarkCountValues: 0.0111276 s
benchmarkCountValuesMap: 0.0213027 s

Exécution du benchmark pour bibliothèque pycount

Dans le répertoire library/benchmarks

# Installation pour pycount
source . /venv-pycount/bin/activate
python3 -m pip install ../pycount
# Exécuter le benchmark
python3 ./benchmark_pycount.py

L'exécution devrait vous donner une sortie similaire à ceci qui représente le temps de traitement du fichier input.txt :

benchmark_count_characters: 0.18044040203094483 s
benchmark_count_values: 0.1599952006340027 s
benchmark_count_values_map: 0.4135279726982117 s

Exécution du benchmark pour bibliothèque cppcount-pybind11

Dans le répertoire library/benchmarks:

# Installation pour pycount
source ./venv-cppcount-pybind11/bin/activate
python3 -m pip install ../cppcount
# Exécuter le benchmark
python3 ./benchmark_cppcount_pybind11.py

L'exécution devrait vous donner une sortie similaire à ceci qui représente le temps de traitement du fichier input.txt :

benchmark_count_characters: 0.013517167568206787 s
benchmark_count_values: 0.03358586311340332 s
benchmark_count_values_map: 0.28410849809646604 s