Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Ce que j'ai mesuré est seulement la différence 10 million d'appel à un invoke() et autant d'appels direct a la méthode pour se faire une idée générale de la différence de vitesse entre appel direct et introspection.Envoyé par le y@m's
On est d'accord que si on fait des appels ponctuels à un traitement qui dépasse de toute façon quelques dizaines de millisecondes, ce qui sera généralement le cas, on se fiche royalement de la différence.
C'était juste pour info, et c'est pour cela que je ne l'avait pas précisé à la baseEnvoyé par le y@m's
Je me doute bien que le Event handler doit avoir déjà récupéré l'objet Method qu'il utilise lors de l'instanciation.
Ah je comprends mieux ta différence de temps d'exécution. Comme tu l'avais formulé ce n'était pas évident du tout que tu avais fait ton test dans une boucle. Ca laissait plutôt à penser qu'il s'agissait d'un simple appel, d'où mon étonnement.
Donc oui avec une boucle il vaut mieux éviter l'utilisation de l'EventHandler, mais dans un cas d'utilisation simple la différence reste négligeable.
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Ce qui est interessant c'est de savoir la différence de temps d'execution entre un appel de fonction via l'EventHandler et via un appel direct. Et ca ne dépend pas du temps de traitement qui sera fait dans la fonction cible. Pour le tester, il faut effectivement faire une boucle.
Oui, on est d'accord. Et dans le cas de l'EventHandler, comme c'est une réaction à un evenement utilisateur, un temps de réaction de 5 ms ou de 150ms (valeurs prises au pif) ne fait pas une grosse différence. Mais dans un cas plus général, par rapport à la reflexion, c'est quand meme interessant à savoir qu'il y a une aussi grosse différence.
Le test dépend de ton cas d'utilisation. Pour l'EventHandler le cas d'utilisation est justement de ne pas l'utiliser dans une boucle. Du fait de la reflexion on sait déjà qu'il y aura un surcoût pour chaque appel et donc que son utilisation dans une boucle est à proscrire. Donc ce n'est pas très utile de faire ce test puisqu'on sait déjà qu'on aura des perfs minables et qu'on ne choisira pas cette solution (EventHandler pour le cas d'une boucle).
Ce qui est interessant par contre c'est de connaitre le surcoût pour le cas d'utilisation, c'est à dire sur un appel simple.
Après on peut toujours faire le test avec une boucle mais bon ya pas vraiment de surprise ^^.
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Partager