Ich habe eine einfache Funktion Aufruf und String-Operation in einer Schleife, das Java-Programm läuft viel schneller unter der Befehlszeile als das Starten (Ausführen als ...) von Eclipse ...
Es wurden 6 Zeilen ausgegeben, jede Zeile hat ungefähr 120 Zeichen. Jede Zeile ist ein perf Ergebnis von 50ms bis 300ms.
Die Gesamtzeit beträgt etwas mehr als 2 Sekunden.
"viel langsamer" bedeutet hier, für bestimmte Operationen (Funktionsaufruf) sehe ich 20 ms vs 300 ms.
Nach dem einmaligen Ausführen der Konsole, fängt die Geschwindigkeit der Eclipse an!
Nachdem ich den Code in Eclipse geändert und erstellt habe, wird die Geschwindigkeit auf CL fallen, wenn ich es nicht mit der Befehlszeile neu erstellen werde.
Sieht so aus, als ob einige Hotspot-Informationen nur mit CL ...
erzeugt werdenVielleicht ist nur die Eclipse-Konsole langsamer als Ihre Betriebssystemkonsole? Außerdem ist Ihr Benchmark bei einer Gesamtlaufzeit von ~ 2 Sekunden wahrscheinlich nur sehr ungenau.
Am wahrscheinlichsten ist die Speicherverwendung als Ergebnis des Ladens von Eclipse, mit der Möglichkeit, dass Eclipse zusätzlich zur ausführbaren Datei noch etwas tut, wie das Tauschen von Klassenladern oder das Starten des Java-Debuggers.
Ich würde sagen, die wahrscheinlichste Antwort ist jedoch einfach: Eclipse verwendet eine Menge Ressourcen, insbesondere Speicher, und verhungert das System ein wenig, was zu einem Auslagern führt und die Leistung verringert. YMMV, und es gibt keine Garantie, dass ich Recht habe, ohne Ihr System zu sehen, es ist nur meine beste Schätzung.
Ich stimme anderen Kommentaren zu, dass Eclipse beim Ausführen der Anwendung und beim Drucken der Konsole etwas unternimmt.
Eclipse hat einen eigenen Compiler (normalerweise als Eclipse JDT bezeichnet), der die inkrementelle Kompilierung unterstützt. Es besteht die Möglichkeit, dass das von Eclipse kompilierte Binary nicht optimiert ist, da es von javac kompiliert wird.
Diese beiden Compiler dienen unterschiedlichen Zwecken. JDT ermöglicht Eclipse hauptsächlich die Bereitstellung von State-of-Art Refactoring und Auto-Completion, und javac gibt sich viel Mühe mit der Optimierung.
Tags und Links eclipse java command-line performance