Ich habe ein Java-Programm geschrieben, das alle sich wiederholenden Permutationen basierend auf den Zeichen und der angegebenen Länge generiert.
Wenn ich meinen Code in Eclipse ausführe, wird in nur 15 Sekunden eine Datei mit 1.000.000 Permutationen generiert. Wenn ich das Programm jedoch in der Eingabeaufforderung mit "Java-Permutation" auf demselben Computer ausführe, dauert es 1 Minute 35 Sekunden, um dieselben 1M-Permutationen zu generieren.
Warum ist das? Und gibt es überhaupt eine Möglichkeit, diese Art von Leistung ohne Eclipse zu erzielen?
Bearbeiten: Java VisualVM-Ergebnisse hinzugefügt
www.craftboom.co.uk/jvm.png - Die CPU-Auslastung ist höher, wenn Eclipse ausgeführt wird. Sowohl die CPU- als auch die Speichernutzung scheinen in der Shell o_O gelegentlich auf 0 zu sinken
EDIT2: Es stellt sich heraus, dass das Drucken auf dem Bildschirm problematisch ist. Ich habe es in meinem ursprünglichen Beitrag nicht erwähnt, aber das Programm druckt jede Permutation auf der Konsole aus. Kommentierte dies aus und speicherte es stattdessen in einer Datei. Jetzt läuft es in Shell und Eclipse gleich schnell. :-)
Vielen Dank an alle für die Antworten.
quelle
Antworten:
Längere Laufzeiten weisen auf ein Speicherproblem hin. Entweder Sie wechseln auf die Festplatte oder Sie haben viel mehr Speicherbereinigungen als in Eclipse (weil Sie einen kleineren Heap haben).
Führen Sie es mit einem Profiler aus und sehen Sie, wo die Zeit verbracht wird. Für Java beginnen Sie mit jvisualvm im JDK.
quelle
Überprüfen Sie die Einstellungen in eclipse.ini in Ihrer Installation (es enthält JVM-Einstellungen). Es ist möglich, dass sie die JVM so konfigurieren, dass sie effizienter genutzt wird als Sie, wenn Sie das Programm ausführen.
http://wiki.eclipse.org/Eclipse.ini
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
quelle