5

2awkつの出力関数があります:printprintf

  • それらの実装はawk非常に異なりますか?
  • パフォーマンス/速度に関する違いは何ですか(可能であればtime、コマンドラインの「」だけでなく理論上の違いもあります)。
  • 彼らは同じシステムコールを使用していますか?
4

1 に答える 1

12
  1. パフォーマンスの違いはおそらく測定できません。
  2. 関数はprint最後に改行を出力します。printf要求されない限り、しません。
  3. コードはprint引数を文字列に変換し、OFS (出力フィールド区切り文字) で区切られた出力に送信します。
  4. コードは、double 形式 (または何か) および同様の操作printfを使用してフォーマットする前に、文字列を double に変換する必要がある場合があります。%16.8g
  5. 使用されるシステム コールは、write(2)または両方に似たようなものですが、その<stdio.h>上に層状のコード (おそらく) があります。

合計すると、次のようになります。

  • 実装は異なります。printよりも少し単純です (したがって高速です) printf
  • ほとんどの場合、違いはおそらく測定できません。
  • print必要なことを行う場合に使用します。printf必要なことをするときに使用します。
  • ご心配なく。

また、 a にsprintf続けて a を使用すると、直接print使用するよりも遅くなる可能性が高いため、使用printfしないでください。

疑わしい場合は、測定してください。

于 2012-09-06T22:55:05.660 に答える