Bonjour
Je voudrai calculer le temps CPU d'un algorithme dans Matlab; tic toc fait l'affaire mais est ce que vraiment le temps CPU, ou non??merci de votre réponse
Version imprimable
Bonjour
Je voudrai calculer le temps CPU d'un algorithme dans Matlab; tic toc fait l'affaire mais est ce que vraiment le temps CPU, ou non??merci de votre réponse
Peut-être un élément de réponse ici
Christophe
A ma connaissance non. Enfin... pas exactement.
Je ne suis pas un spécialiste mais voici comment je comprends (théoriquement et très simplement) les choses :Le code MATLAB est transférer, via le système d'exploitation, au processeur qui exécute des opérations arithmétiques basiques. C'est ce qu'on appelle couramment un processus.Tout ceci reste assez théorique et surtout très simpliste. Les cadences des processeurs sont beaucoup plus rapide que les système d'exploitation et on trouve maintenant plusieurs processeurs avec plusieurs cœurs sur les ordinateurs.
Le temps processeur (ou CPU) est donc la somme des intervalles de temps de chaque calcul élémentaire d'un processus. Si le processeur met 1ms pour exécuter une opération élémentaire et que le code lui demande de faire 1000 opérations, le temps CPU pour ce processus sera de 1s.
Les systèmes d'exploitation actuels sont multitâches, ce qui signifie qu'ils sont capables de gérer "en même temps" plusieurs processus de manière plus ou moins indépendante. Mais au final le processeur ne peut lui exécuter concrètement qu'une seule tâche à la fois.
Le temps CPU n'est donc pas exactement le temps d'exécution d'un programme. Si, par exemple, ce processus n'est pas prioritaire par rapport à d'autres processus plus importants, le temps CPU lui ne changera pas, par contre entre chaque calcul, il se peut fort bien que le CPU traite d'autres opérations pour d'autres processus. D'où une différence au final entre le temps d'exécution nécessaire pour finir le processus et le temps CPU toujours identique.
Maintenant, je ne pense pas que ton problème soit de mesurer le temps CPU.
Pour répondre exactement à ta question, il nous faudrait savoir ce que tu comptes faire avec le temps mesuré.
Ne cherches-tu pas plutôt à déterminer la complexité de ton algorithme => :faq: : Qu'est-ce que la complexité ?
Bonjour christophe_halgand;
Mais ton lien ne marche pas.
merci comme meme
Alors tu le retrouves en faisant une recherche sur google :
"tic toc time CPU"
Et c'est le premier :
"MATLAB Central - Newsreader - Cpu time in matlab"
Christophe
Bonjour M.Dut
Oui c'est ce que je cherche (la complexite), mais est ce que je peut calculer (cette complexite) le temps cpu juste avec la commande tic...
merci
Code:mlint('filename','-cyc')
Bonjour
C'est bon, j'ai compris parfaitement le temps cpu n'est pas exactement celui de l'exécution du programme; puisque il y a d'autres processus.
Juste une question concernant la phrase: Tu dit:
'Si, par exemple, ce processus(? lequel? de l'exemple que tu as donne? si oui) n'est (Donc enlève n'est pas) pas prioritaire par rapport à d'autres processus plus importants, le temps CPU lui ne changera pas, par contre entre chaque calcul, il se peut fort bien que le CPU traite d'autres opérations pour d'autres processus. D'où une différence au final entre le temps d'exécution nécessaire pour finir le processus et le temps CPU toujours identique'.
Peut être je me trompe? éclaircis moi s'il te plait?
Bonjour tug83
L 1 (C 12-14): The McCabe complexity of 'ad2' is 5.
L 60 (C 5): 'A' might be growing inside a loop. Consider preallocating for speed.
C'est le résultat que j'obtiens; la deuxième proposition je l'ai compris; mais la premiere non? ca veut dire que j'ai une complexite de 5 et c'est pas vrai donc comment tu explique ca???
C'est pas le nombre d'opérations que fait l'algorithme
Mon algorithme fait une somme et une multiplication 10000 fois
mais le resulats? est seulement 5? comment on explique ça?