2010-09-25 5 views
2

La colonne "total" n'atteint pas 100% (beaucoup plus) et on dirait que le moi le fait. Je pense que le soi est non cumulatif et total est. Donc, si methodA appelle methodB appelle methodC, dans self Id, voir le% pour chaque appel de méthode individuellement, alors qu'au total methodA montrerait le total des trois méthodes, methodB affichera le 2, et ainsi de suite.webkit profiler

Est-ce correct?

Répondre

3

Supposons que vous ayez ce programme:

main() appelle A() appelle B() appelle C(), et C se bloque dans une boucle pendant 10 secondes. Le CPU-profileur dire quelque chose comme ceci:

total time: 10 sec 
routine self% inclusive% 
    main  0   100 
    A   0   100 
    B   0   100 
    C  100   100 

Le temps de l'auto de C serait de 10 secondes, 100%. Le temps libre des autres serait essentiellement nul.

Le temps total (inclusivement) de chacun d'eux serait de 10 secondes ou 100%. Vous ne les ajoutez pas. D'autre part, supposons que C passe ses 10 secondes à faire des E/S. Ensuite, le profileur CPU seulement dirait quelque chose comme ceci:

total time: 0 sec 
routine self% inclusive% 
    main  ?   ? 
    A   ?   ? 
    B   ?   ? 
    C   ?   ? 

parce que la seule fois du processeur réelle qu'il utilise est si courte qui a frappé essentiellement pas d'échantillons, pour ainsi obtenir les pourcentages, il est division par zéro.

OTOH si les échantillons étaient sur l'horloge murale, vous obtiendriez la première sortie. Un meilleur type de profileur est celui qui échantillonne la pile d'appels, sur l'horloge murale et vous indique le temps inclus en pourcentage du total, et vous le donne au niveau de la ligne de code, pas seulement pour les fonctions . C'est utile parce que c'est une mesure directe de ce qui pourrait être économisé si la ligne était moins exécutée, et presque aucun problème ne peut la cacher. Des exemples de tels profileurs sont Zoom et LTProf, et on me dit que OProfile peut le faire. Il y a a simple method qui fonctionne avec n'importe quelle langue et nécessite seulement un débogueur.

Here's a discussion of the issues.