Adloun

Chronométrer les deux tris du cours plutôt que compter leurs…

Exercice supplémentaire · niveau 2 · NSI (première), chapitre 7 — Parcourir, trier, prouver · Ce que coûte un tri : bornes et mesures

Énoncé

Chronométrer les deux tris du cours plutôt que compter leurs comparaisons. Les rapports mesurés valent-ils ? Pourquoi la mesure de temps est-elle moins fiable que le comptage ?

Corrigé


import time

def duree(f, t, repet=3):
    """Meilleur temps sur plusieurs exécutions, en secondes."""
    meilleur = None
    for _ in range(repet):
        c = list(t)
        debut = time.perf_counter()
        f(c)
        ecoule = time.perf_counter() - debut
        meilleur = ecoule if meilleur is None else min(meilleur, ecoule)
    return meilleur
sélection (ms)rapportinsertion (ms)rapport
------

Pour référence, les rapports du comptage des comparaisons sur les mêmes tailles valent , , — trois décimales exactes.

Oui, la loi est là. Les rapports de temps tournent autour de : le coût est bien quadratique, et la mesure le montre. Mais ils oscillent entre et , alors que le comptage donne à trois décimales près.

Pourquoi le temps est moins fiable. Trois causes, toutes hors du programme mesuré :

La règle de méthode. Compter pour identifier la loi, chronométrer pour savoir si c'est utilisable. Le comptage est reproductible d'une machine à l'autre et se compare à une formule ; le temps répond à la seule question que le comptage ne traite pas — « est-ce assez rapide pour mon usage ? ». Prendre le meilleur de plusieurs exécutions, comme ci-dessus, réduit le bruit sans le supprimer.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.