2016-06-22 10 views
1

Ruft Java die (g)libc Funktion printf mit den Parametern auf oder macht Java das Ersetzen selbst, was langsam ist, nehme ich an?Java printf Leistung

Also, wenn ich System.out.printf(...); tun, interpretiert Java die %s, %d und rufen .replace("%d", something) oder ist es einfach anrufen die native printf() c-Funktion, geben sie nur bis zur C/C++ nativen Code?

+0

Es ruft nicht die C-Bibliothek auf. –

+0

Warum nehmen Sie an, dass "Java das Ersetzen selbst" langsam ist? –

+0

"das ist langsam ich nehme an" -you nehmen falsch an. Java-Benchmarking ist ein komplexes Unterfangen, aber Sie sollten es immer noch richtig machen, bevor Sie etwas annehmen. Ich denke, der Unterschied wird viel kleiner sein, als Sie erwarten. – VGR

Antwort

1

Der gesamte Code für printf ist in Java erfolgt.

Die meiste Magie passiert in der java.util.Formatter Klasse.

System.out.printf(String format, Object ... args) 

rufen schließlich:

formatter.format(Locale.getDefault(), format, args); 

Formatter#format auch sehen.

+0

Was für ein Mist. libc hat das bereits implementiert, für fast jede Art von I/O. Wie ich schon sagte, das Rad neu erfinden. – Gala