2017-04-04 3 views
2

J'ai des problèmes spécifiques avec les performances, donc commencé à profiler mon application, je vois les statistiques se demander dans Jprofiler - Thread.run a jusqu'à 20% de temps CPU dans l'analyse de l'arbre d'appel, et aller aux appels intérieurs ne représente pas son temps (principalement près de 0%). Semble ligne Thread.run elle-même prend 20% ..Thread.run prend beaucoup de temps processeur dans le profileur

Ce que cela signifie, probablement quelque part une surcharge de création de fil ?, s'il vous plaît conseiller

enter image description here

+0

Avez-vous un spin-wait quelque part dans une méthode d'exécution? – Fildor

+0

Non, pas d'attente, pas de dort – Fagoter

+1

Thread.run ne fait rien, il est plus probable que ce soit une erreur dans le compte dans le profileur. La surcharge dans la création de Thread n'est pas mesurée par un profileur que je connais car il se produit dans le code natif avant le démarrage du thread. Est-ce que vous créez beaucoup de threads de très courte durée de vie? Si c'est le cas, utilisez plutôt un pool de threads. Ces jours-ci, je crée rarement du fil directement et créer un pool de threads, même si ce n'est qu'un seul. –

Répondre

3

La méthode run invoquée par un fil est toujours profilée , que la classe du Runnable soit profilée ou non. À partir de ce moment, tout jusqu'à la première classe qui correspond à la configuration du filtre d'arbre d'appel devient une partie de l'auto-évaluation de la méthode d'exécution. Pour voir toutes les classes, utilisez "Echantillonnage" comme méthode d'enregistrement de l'arbre d'appel et cochez la case "Désactiver tous les filtres" à côté du paramètre "Echantillonnage" dans les paramètres de profilage.

+0

Bien que vrai, cela n'explique pas comment à la condition nulle et un appel de méthode pourrait utiliser un pourcentage élevé de cpu. –

+0

à mon avis c'est juste une confusion à propos de la lecture des résultats de profilage. Nous saurons mieux une fois que nous voyons le code et une capture d'écran du profileur – paranoidAndroid

+0

@PeterLawrey S'il vous plaît voir mon commentaire ci-dessus –