Numérique et Sciences Informatiques • 1ère

Évaluation expérimentale

Évaluation Expérimentale
\( T(n) = \text{Temps d'exécution} \)
Mesure empirique de performance
Métriques mesurées :
Temps d'exécution
Utilisation mémoire
Comparaisons effectuées
Échanges dans un tri
Définition :
Analyse pratique des performances d'un algorithme par des tests réels
Méthodologie
🧪
Créer des jeux de données test
⏱️
Mesurer le temps d'exécution
📊
Représenter les résultats graphiquement
🔄
Répéter plusieurs fois pour lisser les résultats
🔍
Comparer avec la complexité théorique
Bonnes Pratiques
📏
Variations de taille de données
🎲
Données aléatoires, triées, inversées
🖥️
Conditions matérielles stables
Méthodes & Conseils
Utiliser time.time() ou time.perf_counter()
📊
Calculer la moyenne de plusieurs exécutions
🎯
Isoler le code à tester
📉
Tracer courbes pour observer tendances
💡
Valider avec des cas simples connus
Code Exemple
# Mesure du temps d'exécution
import time

def mesure_temps(algo, donnees):
    debut = time.perf_counter()
    resultat = algo(donnees)
    fin = time.perf_counter()
    return fin - debut
# Génération de données
import random

def genere_donnees(n):
    return [random.randint(1, 1000) for _ in range(n)]
Avantages & Limites
Avantages : Résultats concrets, applicables au contexte réel
⚠️
Limites : Dépend du matériel, limité aux tailles testées
🔄
Complémentarité : Valide les analyses théoriques
🔍
Observation : Permet de détecter anomalies de performance
Applications Pratiques
Comparaison d'algorithmes :
Tri rapide vs tri fusion
Recherche linéaire vs recherche binaire
Différentes implémentations d'un même algorithme
Validation de performances :
Vérification de la complexité annoncée
Identification des seuils de performance
Optimisation empirique
Algorithmes classiques Algorithmique et programmation