Mesurer les performances de votre code
Présentation des fonctions de chronométrage des performances
La fonction timeit et les fonctions de chronomètre tic et toc vous permettent de mesurer le temps d’exécution de votre code. Utilisez la fonction timeit pour mesurer rigoureusement le temps d’exécution d’une fonction. Utilisez tic et toc pour estimer le temps d’exécution de portions de code plus petites qui ne constituent pas une fonction complète.
Pour obtenir des informations supplémentaires sur les performances de votre code, notamment les appels de fonction et le temps d’exécution de lignes de code individuelles, utilisez MATLAB® Profiler. Pour plus d’informations, consultez Profile Your Code to Improve Performance.
Fonctions temporelles
Pour mesurer le temps requis pour exécuter une fonction, utilisez la fonction timeit. La fonction timeit appelle plusieurs fois la fonction spécifiée et renvoie la médiane des mesures. L’entrée est le handle de la fonction à mesurer et la sortie est le temps d’exécution médian en secondes. Supposons que vous définissiez une fonction computeFunction acceptant deux entrées x et y définies dans votre espace de travail. Vous pouvez calculer le temps d’exécution de cette fonction avec timeit.
f = @() myComputeFunction(x,y); % handle to function
timeit(f)Chronométrer des portions de code
Pour estimer le temps d’exécution d’une partie de votre programme ou comparer la vitesse de différentes implémentations de certaines portions, utilisez les fonctions de chronomètre tic et toc. L’invocation de tic déclenche le chronomètre et l’appel à toc suivant lit le temps écoulé.
tic
% The program section to time.
tocParfois, les programmes s’exécutent trop rapidement pour que les données renvoyées par tic et toc soient utiles. Si l’exécution de votre code prend moins de 1/10e de seconde, envisagez de mesurer son exécution en boucle, puis de calculer la moyenne pour déterminer la durée d’une seule exécution.
La fonction cputime comparée à tic/toc et timeit
Il est recommandé d’utiliser timeit ou tic et toc pour mesurer les performances du code. Ces fonctions renvoient la durée chronométrée. Contrairement à tic et toc, la fonction timeit appelle le code plusieurs fois et prend donc en compte les coûts initiaux.
La fonction cputime mesure le temps CPU total en additionnant tous les threads. Cette mesure est différente de la durée chronométrée renvoyée par timeit ou tic/toc et elle peut être trompeuse. Par exemple :
Le temps CPU associé à la fonction
pauseest généralement court mais la durée chronométrée tient compte du temps réel pendant lequel l’exécution de MATLAB est mise en pause. Par conséquent, la durée chronométrée peut être plus longue.Si votre fonction utilise de manière égale quatre cœurs de processeur, le temps CPU peut être environ quatre fois plus long que la durée chronométrée.
Conseils pour mesurer les performances
Tenez compte des conseils suivants lorsque vous mesurez les performances de votre code :
Chronométrez une portion de code suffisamment importante. Dans l’idéal, l’exécution du code chronométré doit prendre plus de 1/10e de seconde.
Insérez le code concerné dans une fonction au lieu de le chronométrer en ligne de commande ou dans un script.
Si le but n’est pas de mesurer le coût initial, exécutez votre code plusieurs fois. Utilisez la fonction
timeit.Évitez d’utiliser
clear alllorsque vous mesurez les performances. Pour plus d’informations, reportez-vous à la fonctionclear.Affectez la sortie à une variable au lieu de la laisser être affectée par défaut à
ans.