Javaは、パラメータを持つ(g)libc
関数printf
を呼び出しますか、Javaはそれ自体を置き換えますか?これは遅いですか?私はSystem.out.printf(...);
を行う際Java printfの性能
だから、Javaは%s
、%d
を解釈し.replace("%d", something)
を呼び出すか、それだけで、ネイティブprintf()
C関数を呼び出すだけでC/C++のネイティブコードへを通してそれを渡すんですか?
Javaは、パラメータを持つ(g)libc
関数printf
を呼び出しますか、Javaはそれ自体を置き換えますか?これは遅いですか?私はSystem.out.printf(...);
を行う際Java printfの性能
だから、Javaは%s
、%d
を解釈し.replace("%d", something)
を呼び出すか、それだけで、ネイティブprintf()
C関数を呼び出すだけでC/C++のネイティブコードへを通してそれを渡すんですか?
printfのすべてのコードはJavaで行われます。
ほとんどの魔法はjava.util.Formatterクラスで発生します。
System.out.printf(String format, Object ... args)
は最終的に呼び出します。
formatter.format(Locale.getDefault(), format, args);
は、同様にFormatter#formatを参照してください。
なんとバマー?ほとんどすべてのタイプのI/Oのために、libcには既に実装されているものすべてがあります。私が上記のように、ホイールを再発明する。 – Gala
Cライブラリを呼び出しません。 –
なぜ「Javaを置き換えているのか」が遅いと思われますか? –
"これは遅いですが、あなたは間違っていると思います。 Javaのベンチマークは複雑な作業ですが、何かを推測する前に、正しく実行してください。私は違いがあなたが予想しているよりずっと小さくなると思う。 – VGR