2017-04-01 1 views
-1

Je suis nouveau au profilage JavaPouvez-vous expliquer le graphique de profil de fil?

enter image description here

J'ai un fil qui se lit d'un fichier sont faire une opération regex sur chaque ligne. L'image ci-dessus est le graphique que j'ai obtenu du profileur JVisualVM pour mon thread.

  1. Le vert est en cours d'exécution.
  2. Le violet dort.
  3. orange est stationné

Il semble que le sommeil de fil plus que la course. Je sais en raison de fichier lu c'est un peu acceptable. Mais cela semble beaucoup plus que cela.

Pouvez-vous expliquer, est-ce que cela a quelque chose à faire quelle opération regex ou ai-je besoin de chercher pour plus d'optimisation?

+0

Il y a beaucoup de facteurs qui manquent à votre question, ce qui rend difficile de répondre comme: Qu'est-ce qui fonctionne sur cette machine? Combien de cœurs votre boîte fonctionne-t-elle? Qu'en est-il des contraintes de mémoire? Quelle est la charge de votre boîte? – SMA

+0

Les threads sont contrôlés par un planificateur de système d'exploitation qui leur donne le temps de travailler, de laisser les autres threads fonctionner, etc. et prend en compte tous les facteurs mentionnés dans le commentaire précédent. – efekctive

+1

Les disques durs sont beaucoup plus lents que les processeurs. Je ne peux vraiment pas voir un problème dans la production de profilage. La CPU achève le traitement et attend le disque dur pour lire le fichier (ce qui est une opération très chronophage par rapport aux opérations de logique arithmétique). – ferit

Répondre

0

Le résultat du profilage n'est pas inattendu pour ce type de travail. Le thread est en train de dormir la plupart du temps à cause de l'accès au fichier. Pour obtenir des améliorations de vitesse substantielles, vous devrez probablement traiter l'accès aux fichiers d'une manière ou d'une autre.