8
votes

Profilage de méthode (temps d'exécution de base) avec le ressort AOP

Je recherche une fonctionnalité ou un logiciel, qui me permettra de profiler facilement mon temps d'exécution de la méthode et de choisir ce qu'il faut profiler par filtre à colis.

Je sais, c'est le profileur 101. J'utilise le profileur TPTP. Mais je ne suis pas content de ça. Pour être franc, je ne comprends tout simplement pas comment cela fonctionne, et lorsque je profile ma demande (lancez le serveur en mode de profilage), il faut ne rien faire pour ne rien faire. (Eh bien, pas ce que j'attends: une simple sortie de temps d'exécution)

Donc, je fais le profilage moi-même avec du temps système (ajoutez une ligne au début et à la fin des méthodes). Ce n'est pas si grave.

Ma question est la suivante: je veux mesurer le temps système avant et après une méthode d'appel avec le Spring AOP, pouvez-vous me donner la direction? C'est une bonne / mauvaise idée? La base de code est assez grande et nous n'avons pas de tests d'unités, ne peut-il pas être "dangereux"?

Je ne demande pas de code, je pense que je peux le faire moi-même avec ce type de lien: http://static.springsource.org/spring/docs/ 2.5.x / Référence / AOP.HTML

Mais si vous avez un bon tutoriel (jamais fait AOP avant, connais le concept), je le prends.


3 commentaires

Votre application est-elle déjà tirée par le printemps? Essayez-vous de profiler des méthodes qui font partie d'un haricot géré de printemps?


Oui, la majeure partie de l'application est entraînée au printemps et oui la méthode que je veux profiler faites partie du haricot de printemps


@Antoineclaval Pouvez-vous répondre à cela: Stackoverflow.com/Questtions/44070523/...


4 Réponses :


1
votes

L'approche de l'AOP fonctionnerait mais en fonction de la manière dont vous envisagez de loger les informations pourraient lui-même effectifier la performance - simplement en être conscient de cela, assurez-vous que la journalisation est efficace la plus efficace et assurez-vous que votre erreur en manipulait sur le point votre aspect.

Vous voudrez peut-être aussi regarder comme Visual VM - J'ai été impressionné par cet outil, c'est Facile à utiliser et a été capable de me fournir simplement les informations dont j'avais besoin lorsque je l'ai utilisé la dernière fois.


1 commentaires

Pouvez-vous s'il vous plaît répondez à ceci: Stackoverflow .com / questions / 44070523 / ...



13
votes

Il y a un support intégré pour cela au printemps.

J'ai essayé de chercher du tutoriel mais surprenant, je n'en ai pas trouvé un pour que je puisse essayer de l'expliquer ici. (Edit: J'ai ajouté cet exemple à mon blog Ici ) p>

Fondamentalement, ce dont vous avez besoin est d'étendre la classe CustomizableTreCeTinterceptor comme ceci: p>

    <!-- Tracing -->

<bean name="traceInterceptor" class="MyTraceInterceptor" dependency-check="none">

    <property name="enterMessage" value="ENTER: $[targetClassShortName].$[methodName]($[arguments])"/>

    <property name="exitMessage"

              value="EXIT: $[targetClassShortName].$[methodName]() : $[invocationTime]ms : $[returnValue]"/>

</bean>

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" dependency-check="none">

    <property name="beanNames" value="*RequestListener,*Notifier"/>

    <property name="proxyTargetClass" value="true"/>

    <property name="interceptorNames">

        <list>

            <value>traceInterceptor</value>

        </list>

    </property>

    <property name="order" value="2"/>

</bean>


2 commentaires

Word of AVERTISSEMENT Ici, ceci est lié à la chronomètre à ressort qui spécifie le temps d'exécution dans la SP. Vous ne pouvez pas le changer à NS Afaik.


@Jon, Gregory - pouvez-vous s'il vous plaît répondez à ceci: Stackoverflow.com/questions/44070523/...