Renvoie les résultats du profiling d'une fonction
c = profile(fun)
une fonction Scilab
une matrice nx3 contenant les résultats de profiling :
c(i,1)
: nombre de fois que la ligne i de la fonction a été executée
c(i,2)
: temps CPU cumulé [en secondes] passé pour exécuter la ligne i de la fonction
c(i,3)
: mesure de l'effort de l'interpréteur sur la ligne i de la fonction [unité arbitraire]
Pour utiliser profile
sur une fonction, le profiling de la fonction doit d'abord avoir été activé:
soit en utilisant la commande add_profiling
ou si la fonction a été définie avec la commande deff, en positionnant le paramètre optionel de deff à "p".
Une fois que la function a été exécutée, l'appel de profile
renvoie une matrice, où chaque ligne contient les résultats de profiling de la ligne correspondante de la fonction (en comptant la ligne d'entête), c'est à dire le nombre de passages, ou le temps total passé par le CPU dans cette ligne, et une mesure de l'effort de l'interpréteur pour interpréter la ligne, comme suit:
Nombre d'appels | Temps total CPU (s) | Effort interpréteur |
1 | 0 | 0 |
300 | 0.1 | 0 |
300 | 3,59 | 5 |
... | ... | ... |
Ici nous pouvons voir que la 3ème ligne de la fonction a été appelée 300 fois pour un temps total CPU de 3,59 secondes.
Note: en raison de la limite de précision de mesure de temps CPU (en général une micro seconde), certaines lignes dont l'exécution est très rapide peuvent apparaitre avec un temps CPU cumulé à 0.
// Fonction qui est profilée function x=foo(n) if n > 0 then x = 0; for k = 1:n s = svd(rand(n, n)); x = x + s(1); end else x = []; end endfunction // Active le profiling de la fonction add_profiling("foo"); // Exécute la fonction foo(200); // Renvoie les résultats de profiling de la fonction profile(foo) | ![]() | ![]() |