0% ont trouvé ce document utile (0 vote)
50 vues2 pages

Mesure du Temps d'Exécution en C++

Le document présente un algorithme pour trouver la première valeur vraie dans un tableau de booléens. Il mesure et affiche les temps d'exécution minimum, maximum et moyen de l'algorithme pour des tableaux de tailles variables.

Transféré par

barry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
50 vues2 pages

Mesure du Temps d'Exécution en C++

Le document présente un algorithme pour trouver la première valeur vraie dans un tableau de booléens. Il mesure et affiche les temps d'exécution minimum, maximum et moyen de l'algorithme pour des tableaux de tailles variables.

Transféré par

barry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

#include <iostream>

#include <vector>
#include <ctime>
#include <limits>
#include <chrono>
#include <math.h>

using namespace std;

// Fonction pour calculer le temps écoulé en secondes


double calculerTemps(std::chrono::steady_clock::time_point debut,
std::chrono::steady_clock::time_point fin) {
// Calculer la différence entre les deux moments en nanosecondes
std::chrono::duration<double> temps_ecoule =
std::chrono::duration_cast<std::chrono::duration<double>>(fin - debut);
// Convertir la durée en secondes et la retourner
return temps_ecoule.count();
}

int mystere(const vector<bool>& T) {


int i = 0; // Initialisation de l'indice i
while (i < T.size() && !T[i]) { // Tant que i <= n et T[i] est faux
i++; // Incrémentation de i
}
if (i == T.size()) // Si aucun vrai n'est trouvé dans le tableau
return -1; // Retourne -1 pour indiquer l'absence de vrai
return i + 1; // Ajout de 1 car les indices en C++ commencent à 0
}

int main() {
int n;
cout << "Entrez la taille du tableau de booléens (maximum " <<
numeric_limits<int>::max() << ") : ";
cin >> n;

if (n <= 0) {
cout << "Taille invalide." << endl;
return 1; // Quitter le programme avec un code d'erreur
}

vector<bool> tableau(n); // Déclaration d'un vecteur de booléens de taille n

chrono::steady_clock::time_point debut, fin;


double temps_min = numeric_limits<double>::max(); // Initialiser à la plus
grande valeur possible
double temps_max = 0;
double temps_total = 0;

for (int i = 0; i < ; ++i) { // Modifier


// Générer un tableau de booléens aléatoire (juste pour illustrer, vous
pouvez le modifier selon vos besoins)
for (int j = 0; j < n; ++j) {
tableau[j] = rand() % 2; // Génère une valeur aléatoire (0 ou 1)
}

debut = chrono::steady_clock::now(); // Marquer le début du calcul


mystere(tableau); // Appeler la fonction mystere
fin = chrono::steady_clock::now(); // Marquer la fin du calcul
double temps_execution = calculerTemps(debut, fin);
temps_total += temps_execution;

if (temps_execution < temps_min) {


temps_min = temps_execution;
}
if (temps_execution > temps_max) {
temps_max = temps_execution;
}
}

// Calculer le temps moyen


// Calculer le temps moyen
double temps_moyen = temps_total / pow(2, n); // n étant la taille du tableau

// Afficher les temps d'exécution dans le terminal


cout << "Temps au mieux: " << temps_min << " secondes" << endl;
cout << "Temps au pire: " << temps_max << " secondes" << endl;
cout << "Temps moyen: " << temps_moyen << " secondes" << endl;

return 0;
}

Vous aimerez peut-être aussi