39 votes

Android Eclipse: Traceview, je n'ai tout simplement pas l'obtenir

Je n'arrive pas à obtenir les différents éléments de la traceview sortie, et je ne peux pas trouver un tutoriel. Quelqu'un pourrait-il expliquer les suivants en référence au schéma ci-dessous:

enter image description here

  1. La largeur des barres correspond à la fois la fonction prend. Quelle est la hauteur correspondent à?
  2. Quelle est la différence exacte entre inclusion et d'exclusion. Je suppose que inclusive comprend les appels de tous les enfants de fonctions?
  3. Serait-ce vrai: La somme de (Temps par la durée de l'appel des Appels) = temps le programme s'exécute (qu'en asynchrone tâches?)
  4. Peut async tâches être ignoré lors du débogage de ralentissement sur le thread principal ?
  5. Si la somme de tous les pourcentages dans Excl% égal à 100%?
  6. Ce qui se passe quand il y a des lacunes (blanc au milieu de noir)? C'est que lorsque android d'autres processus sont en cours, ou tout simplement votre propre async tâches (on dirait les lacunes dans un sont alignés avec le rempli en partie dans l'autre, si c'est le cas, alors il y a le point en déplaçant les tâches intensives à une AsyncTask)?

17voto

jdowdell Points 585

(J'aurais ajouté présente comme un commentaire de @ron réponse, mais ma réputation n'est pas encore assez élevé pour que je puisse les commenter ;)).

Depuis juillet 2011, vous pouvez en effet obtenir traceview et VMDebug pour vous donner horloge murale de temps ainsi que de l'utilisation de l'uc de temps, grâce à un changement de code par Jeff Brown. J'ai peur que les autorisations nécessaires ont besoin d'un dispositif enracinée cependant. Cela conduit également à une manière légèrement différente traceview fenêtre de la poste par tjb ci-dessus.

http://git.insignal.co.kr/?p=mirror/aosp/platform/dalvik.git;a=commitdiff;h=9f640af99bebc6e96f6e1e9903557e2c8f567483

TLDR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock et redémarrer votre appareil.

Gestion des ressources humaines, depuis que je suis techniquement censé aider à répondre à la question:

  1. Ma compréhension de la hauteur des barres est qu'il est lié à la mère fonctions. Supposons que a() appelle b(). Puis un() est en cours d'exécution, tandis que b() est également en cours d'exécution. Tandis que b() est en cours d'exécution traceview montrera b couleur; mais quand l'un est en cours d'exécution (c'est à dire hors du temps), il va dessiner une couleur, et il va dessiner un bar légèrement plus élevé que b s bar. Au moins, c'est certainement la façon dont les choses fonctionnent lorsque vous effectuez un zoom avant; Si vous cliquez sur la fonction correspondant à la longueur de la barre, il sera mis entre parenthèses sous les petits bars près de lui montrer que le parent est responsable de tous; et le parent est toujours montré comme le plus grand bar.

  2. oui :). Inclus est le temps passé à l'exécution de la fonction ou de toute chose appelée par la fonction Exclusive est exclusive de fonctions, et qui est tout simplement le temps passé dans la fonction appropriée (ou de la commutation dans/hors de lui).

  3. Uniquement pour le niveau supérieur, qui, je pense, vous implicites; et même alors, voir @ron réponse - c'est l'utilisation de l'uc le temps, pas le temps horloge murale. AsyncTasks exécuter dans le thread principal, et ainsi de se figurer quelque part dans le toplevel ventilation. De même pour les Gestionnaires

  4. répondu par Eric

  5. Non, à cause du tour / tour vers le bas (c'est à dire 1.87% montrerait que 1,9%); mais la somme des entrées dans "Exclusif" devraient totaliser le temps total indiqué dans le coin supérieur droit, qui est le même que le nombre calculé pour votre question (3)

  6. répondu par Eric

10voto

Eric Points 1215

Je ne peux pas répondre à toutes vos questions, mais je peux dire...

#4 non, Vous êtes en cours d'exécution d'un processeur simple cœur (ou au moins l'émulation d'un) de manière asynchrone des tâches sur leur propre thread devez interrompre le thread principal pour obtenir des temps de traitement. Tout moment, un autre thread s'exécute sera "ralentissement" sur le thread principal, de sorte que vous devriez être à regarder que.

pour le #6, ces lacunes que vous voyez dans votre threads principaux trace d'exécution corrélation exactement à l'époque où votre asynctask est arriver de temps processeur. De nouveau, single-core, ne peut le faire 1 thread à la fois. Dans cette tranche de temps, il n'a pas l'air comme n'importe quel autre processus a n'importe quel processeur de temps, mais les discussions étaient toujours en train de dormir à l'arrière-plan. Étant donné que c'était (probablement) un émulateur, c'est commun. Sur un téléphone, vous verrez beaucoup plus :)

Je suis aussi assez sûr pour le #1 de la hauteur de chaque pic dans l'exécution du thread est le %d'utilisation du processeur. Par exemple, le thread principal est "noir" de la zone est d'inactivité du système. Edit: Ok, je suis sûre maintenant. C'est ce que c'est. Donc, dans votre thread principal, la zone qui est solide rose est solide, 100% d'utilisation du processeur.

1voto

ron Points 4636

Un autre important savoir-faire de la traceview graphique (comme mentionné ici): L'heure affichée par traceview n'est pas le monde réel horloge murale temps, mais utilisé de temps PROCESSEUR.

Par exemple, en réduisant le FPS de la forme de la traceview graphique ne peut pas changer, puisqu'il n'inclut pas le temps d'inactivité des cycles de vie. Par conséquent, lors de la mesure de la performance, il est également recommandé d'exécuter l'application pour un montant fixe de temps (10 sec, 60 sec, etc), et de vérifier si le temps pris par les 100%, y compris les appels est plus faible qu'avant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X