2016-06-22 17 views
1

Javaは、パラメータを持つ(g)libc関数printfを呼び出しますか、Javaはそれ自体を置き換えますか?これは遅いですか?私はSystem.out.printf(...);を行う際Java printfの性能

だから、Javaは%s%dを解釈し.replace("%d", something)を呼び出すか、それだけで、ネイティブprintf() C関数を呼び出すだけでC/C++のネイティブコードへを通してそれを渡すんですか?

+0

Cライブラリを呼び出しません。 –

+0

なぜ「Javaを置き換えているのか」が遅いと思われますか? –

+0

"これは遅いですが、あなたは間違っていると思います。 Javaのベンチマークは複雑な作業ですが、何かを推測する前に、正しく実行してください。私は違いがあなたが予想しているよりずっと小さくなると思う。 – VGR

答えて

1

printfのすべてのコードはJavaで行われます。

ほとんどの魔法はjava.util.Formatterクラスで発生します。

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

は最終的に呼び出します。

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

は、同様にFormatter#formatを参照してください。

+0

なんとバマー?ほとんどすべてのタイプのI/Oのために、libcには既に実装されているものすべてがあります。私が上記のように、ホイールを再発明する。 – Gala