System.out.println () vs \ n in Java

8

Nehmen wir an, ich wollte 5 Zeilen drucken. Welches ist die beste Methode (für Leistung und Lesbarkeit).

%Vor%

oder

%Vor%

Ist es eine Frage der Präferenz oder ist einer besser als der andere? Es scheint, als würde es mit der zweiten Methode viel Zeit sparen.

    
Will 13.07.2011, 21:05
quelle

7 Antworten

27

Es gibt einen funktionalen Unterschied zwischen den beiden. Die erste Version gibt Zeilenumbrüche mit dem bevorzugten Zeilentrennzeichen der Plattform aus. Die zweite Version gibt Newline-Zeichen aus, was unter Windows oder Mac OS wahrscheinlich nicht angebracht ist.

Dies ist wichtiger als irgendwelche realen oder eingebildeten Leistungsvorteile.

Zum Thema Leistung und warum jeder zu sagen scheint "genug schon".

Der Leistungsunterschied zwischen Ihren beiden Arten, diesen Code zu schreiben, ist wahrscheinlich eine kleine Anzahl von Mikrosekunden oder weniger. Mit anderen Worten, ein Endbenutzer wird den Unterschied nicht bemerken ... es sei denn, der Code wird millionenfach ausgeführt.

In der Regel sind professionelle Softwareingenieure der Ansicht, dass es sich nicht lohnt, Zeit zu investieren, um etwas schneller zu machen, wenn es nicht schneller sein muss. Und es ist sicher es nicht wert, das Geld des Kunden dafür auszugeben.

Sie sollten sich nur dann einer Mikro-Optimierung hingeben, wenn Sie klare Beweise dafür haben, dass es ein Performance-Problem gibt oder geben wird und dass der Code, den Sie optimieren werden, das wahre Problem ist / wird. Die Zeit, die für die Optimierung des falschen Bitcodes aufgewendet wird, ist Zeitverschwendung.

Wie können Sie optimieren ?

  • Wenn die Anwendung beobachtbar langsam ist, gemessen an Kriterien, die tatsächlich von Bedeutung sind.

Und wie können Sie was optimieren?

  • Indem Sie Anwendungsprofiler ausführen und deren Ausgabe analysieren, um zu sehen, wo sich die tatsächlichen Leistungs-Hotspots und Engpässe befinden.

Leistung ist nicht immer ein unwichtiges Problem. Für einige Arten von Software kann ein Entwurf oder eine Implementierung, die die Anforderungen an Leistung und Skalierbarkeit nicht berücksichtigt, eine totale Katastrophe sein. Die meisten Software ist jedoch nicht so.

    
Stephen C 13.07.2011, 21:28
quelle
8

Vielleicht besser als beide:

%Vor%

Dies verwendet das für Ihre Plattform geeignete Zeilentrennzeichen, wobei "\n" nicht gilt.

    
Ryan Stewart 13.07.2011 21:08
quelle
0

Die zweite Option ist die bessere Methode.

Es ist nicht nur einfacher für den Programmierer, sondern führt auch zu weniger Funktionsaufwand.

    
ssell 13.07.2011 21:08
quelle
0

Die zweite ist definitiv weniger Code, Leistung weise könnten Sie keinen Unterschied sehen, aber so kann schneller sein, da es nur 1 Anruf ist, aber es wäre zu vernachlässigen.

    
Jesus Ramos 13.07.2011 21:08
quelle
0

Die zweite Option ist fast sicher schneller, da jeder Aufruf von println () zum Aufruf einer Systemfunktion führt. Dieser Sprung zum Kernel-Code benötigt etwas Zeit. Dies ist der Grund für die Pufferung in C.

    
Maz 13.07.2011 21:09
quelle
0

Wie Sie den Antworten entnehmen können, ist dies eine Frage der Präferenz. Das Beispiel, das Sie geben, ist ein sehr einfaches, bei dem die Leistungssteigerungen und Lesbarkeitsprobleme minimal sind. In einigen komplizierteren Fällen kann jedoch die Wahl der scheinbar äquivalenten Methoden für Ihren Code lähmend sein oder ihn für einen Nachbarn unkenntlich machen.

Wenn der Code aussieht, als würde er irgendwie unordentlich werden, versuchen Sie, den unordentlichen Code zu abstrahieren und ihm einen leicht lesbaren Methodennamen zu geben.

Also, das ist eine Frage der Präferenz.

(Edit: nein, das ist offenbar keine Frage der Präferenz (^ o ^) //)

    
Ziggy 13.07.2011 21:34
quelle
0

Für plattformabhängige Zeilentrenner würde ich verwenden:

%Vor%

Das sollte auf win, linux oder mac funktionieren.

    
Pablo Pazos 28.02.2016 05:12
quelle