Python - Mesure de Performance
Introduction à la Mesure de Performance
Bonjour, aspirants programmeurs Python ! Aujourd'hui, nous allons plonger dans le monde fascinant de la mesure de performance en Python. En tant que votre enseignant de sciences informatiques de quartier, je suis excité de vous guider à travers ce voyage. Croquez-moi, à la fin de cette leçon, vous mesurerez la performance de votre code comme un pro !
Pourquoi Mesurer la Performance ?
Imaginez que vous faites des cookies. Vous voulez savoir quel recette est la plus rapide, non ? Eh bien, mesurer la performance en programmation est exactement cela - nous voulons savoir quel code s'exécute le plus rapidement et utilise le moins de ressources. Ce n'est pas seulement pour se vanter ; un code efficace peut économiser du temps, de l'énergie et même de l'argent dans le monde réel !
Mesure de Temps de Base
Commençons par la manière la plus simple de mesurer la performance : le temps que met notre code à s'exécuter.
Utilisation du Module time
Le module time
de Python est notre premier arrêt sur ce voyage de performance. Voici un exemple simple :
import time
start_time = time.time()
# Votre code va ici
for i in range(1000000):
pass
end_time = time.time()
print(f"Temps d'exécution : {end_time - start_time} secondes")
Dans cet exemple, nous utilisons time.time()
pour obtenir l'heure actuelle avant et après l'exécution de notre code. La différence nous donne le temps d'exécution. C'est comme utiliser un chronomètre !
Le Module timeit
Pour des mesures plus précises, en particulier pour de petits extraits de code, nous utilisons le module timeit
. C'est comme avoir un chronomètre haute précision pour votre code !
import timeit
def test_function():
return sum(range(100))
execution_time = timeit.timeit(test_function, number=10000)
print(f"Temps d'exécution moyen : {execution_time / 10000} secondes")
Ce code exécute notre test_function
10 000 fois et nous donne le temps d'exécution moyen. C'est excellent pour comparer différentes implémentations de la même fonctionnalité.
Mesure de l'Utilisation de la Mémoire
Maintenant, parlons de la mesure de l'utilisation de la mémoire. C'est comme vérifier combien d'espace votre code prend dans le cerveau de votre ordinateur !
Utilisation du Module memory_profiler
Tout d'abord, vous devez installer memory_profiler
:
pip install memory_profiler
Maintenant, voyons-le en action :
from memory_profiler import profile
@profile
def memory_hungry_function():
big_list = [1] * (10 ** 6)
del big_list
if __name__ == '__main__':
memory_hungry_function()
Exécutez ce script avec :
python -m memory_profiler your_script.py
Vous vera une rapport ligne par ligne de l'utilisation de la mémoire. C'est comme avoir une vision X-ray de la consommation de mémoire de votre code !
Profilage CPU
Passons maintenant au profilage CPU. C'est comme regarder votre code en ralenti pour voir quelles parties travaillent le plus dur.
Utilisation de cProfile
Le module cProfile
intégré de Python est un outil puissant pour le profilage CPU :
import cProfile
def cpu_intensive_function():
return sum(i*i for i in range(10**6))
cProfile.run('cpu_intensive_function()')
Cela vous donnera un rapport détaillé de combien de temps chaque partie de votre fonction prend. C'est comme avoir une microscope pour la performance de votre code !
Outils de Visualisation
Parfois, voir est croire. Examinons certains outils pour visualiser nos données de performance.
Graphes en Flammes avec py-spy
Tout d'abord, installez py-spy
:
pip install py-spy
Maintenant, vous pouvez créer des graphes enflammés de votre programme Python :
py-spy record -o profile.svg -- python your_script.py
Cela crée un joli graphe enflammé qui vous montre où votre programme passe son temps. C'est comme avoir une carte thermique de la performance de votre code !
Bonnes Pratiques pour la Mesure de Performance
Faisons un résumé avec quelques bonnes pratiques. Ce sont les règles d'or de la mesure de performance :
- Mesurez, ne devinez pas : Profiliez toujours avant d'optimiser.
- Testez des scénarios réalistes : Mesurez avec des données et des schémas d'utilisation du monde réel.
- Répétez les mesures : La performance peut varier, donc prenez plusieurs mesures.
- Comparez de manière équitable : Assurez-vous de comparer des pommes avec des pommes lors des tests de différentes implémentations.
- Considérez le grand tableau : Parfois, un code légèrement plus lent peut être plus lisible ou plus maintenable.
Résumé des Outils de Mesure de Performance
Voici un tableau pratique résumant les outils que nous avons discutés :
Outil | Objectif | Facilité d'Utilisation | Précision |
---|---|---|---|
Module time
|
Mesure de base du temps | Facile | Faible |
Module timeit
|
Mesure précise de petits extraits de code | Moyen | Haut |
memory_profiler |
Mesure de l'utilisation de la mémoire | Moyen | Haut |
cProfile |
Profilage CPU | Moyen | Haut |
py-spy |
Visualisation du profilage CPU | Moyen | Haut |
N'oubliez pas que la mesure de performance est une compétence qui s'améliore avec la pratique. Ne vous découragez pas si cela semble complexe au début - même les programmeurs chevronnés apprennent constamment de nouvelles techniques !
À mesure que nous terminons cette leçon, j'espère que vous êtes excité à propos de mesurer et d'améliorer la performance de votre code. C'est une compétence cruciale qui vous servira bien tout au long de votre voyage en programmation. Continuez à coder, continuez à mesurer, et surtout, continuez à vous amuser avec Python !
Credits: Image by storyset