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.
# 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
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
À 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
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
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
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
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