2017-08-23 1 views
0

J'ai un problème lors de l'exécution d'un test de junit dans netbeans 8.2. Quand il est simplement lancé, il est quelque chose comme 10x plus rapide que lorsque débogué. Les deux sont faits à l'intérieur de netbeans IDE. Par exemple, un extrait de code pour accéder CosmosDB en utilisant l'API MongoDB:Le test Junit débogué dans netbeans est beaucoup plus lent que l'exécution sans débogage

MongoClientOptions.Builder builder = MongoClientOptions.builder(); 
builder.sslEnabled(mongodbSsl); 

prendra environ 20 secondes, et consommer un noyau CPU complet en le faisant. Si je cours avec -verbose, je vois 570 lignes de sortie de classloader pendant la deuxième ligne de code, mais cela ne me semble pas être quelque chose qui devrait prendre 20 secondes, ni n'explique la différence de temps dans le débogueur. Est-ce que ce pourrait être des exceptions prises et ignorées frappant l'IDE? Y a-t-il un moyen d'obtenir un résultat supplémentaire expliquant où va le temps? Malheureusement, je ne sais pas comment déboguer et profiler en même temps.

Mise à jour: ce problème ne se produit pas dans Eclipse.

+1

Avez-vous des points d'arrêt ou des montres définis dans NetBeans? Essayez de les supprimer et de voir si cela résout le problème. Voir https://stackoverflow.com/questions/4591187/running-a-program-in-debug-mode-is-incredible-slow – Corey

+0

Oui! C'est tout ça merci. Il y avait des points d'arrêt «fantômes» que Netbeans se plaignait toujours de ne pas être en mesure de définir. – Wheezil

Répondre

1

Comme l'a mentionné Corey, il s'agissait d'un cas de points d'arrêt dans Netbeans. Apparemment, certains cas de breakpoints sont très chers. En particulier, Netbeans peut avoir des points d'arrêt qu'il ne peut pas définir (parce qu'ils sont sur une ligne ou une méthode ou une classe qui n'est plus valide). Vous ne pouvez pas les voir et vous ne pouvez donc pas les supprimer facilement. Vous devez "effacer tous les points d'arrêt". Ensuite, tout est de retour à la normale.