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 !

Python - Performance Measurement

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 :

  1. Mesurez, ne devinez pas : Profiliez toujours avant d'optimiser.
  2. Testez des scénarios réalistes : Mesurez avec des données et des schémas d'utilisation du monde réel.
  3. Répétez les mesures : La performance peut varier, donc prenez plusieurs mesures.
  4. Comparez de manière équitable : Assurez-vous de comparer des pommes avec des pommes lors des tests de différentes implémentations.
  5. 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