J'ai remarqué que mon application est parfois très lente, j'ai donc fait quelques tests. C'est une application web très simple. Une servlet obtient des paramètres que les stocke. Tout va bien, sauf une chose. Cela prend trop de temps pour obtenir un paramètre pour la première fois. Peu importe le paramètre que j'essaie d'obtenir, mais pour la première fois c'est très lent. La chose étrange est que cela n'arrive pas toujours. Parfois, obtenir un paramètre pour la première fois n'est pas lent.Demande de servlet getparameter
Mon code ressemble à ceci
request.getParameter("paramName");
request.getParameter("paramName2");
request.getParameter("paramName3");
Obtenir "paramName" est lent. Obtenir les autres est très rapide.
Par lente Je veux dire: 200-800 milliseconde En très rapide, je veux dire: ~ 0 milliseconde (dans l'extrait de code, je ne pas écrire le test de performance, mais je suis en utilisant System.currentTimeMillis()
)
UPDATE
J'ai exporté mon projet dans un fichier .WAR et l'ai déployé sur Tomcat. Tout va bien. Donc, je pense que ce problème est lié à Eclipse ou quelque chose.
Non, je ne débogue pas. J'utilise Tomcat 6 avec Eclipse. Il suffit d'appuyer sur "run on server" et c'est tout. C'est très étrange, et je ne comprends pas. 200ms sonne terriblement long, mais habituellement il est 600 ou même 800 – Bob
@Bob: Si cela ne se produit que pour la première requête, il peut être JIT compiler beaucoup de code. Si cela arrive pour * chaque * demande, je pense qu'il y a un problème avec vos mesures de performance - ou que vous utilisez un 486 :) Sérieusement, si Tomcat prenait 600ms (ou même 200ms) pour analyser les paramètres de requête, il serait inutilisable pour tout déploiement sérieux. –
Je l'ai observé aussi avec Jetty, en fait je vois que beaucoup des premières exécutions de méthodes sont très lentes (par rapport à l'invocation suivante), est-ce que je peux confirmer que c'est à cause de la compilation JIT? – Sudarshan