awk print vs printf函数

时间:2012-09-06 22:49:16

标签: io awk printf

awk中有两个输出函数:printprintf

  • 他们在awk的实现是否有很大差异?
  • 有关性能/速度的差异(如果可能 - 理论上,不仅仅是命令行中的“time”)?
  • 他们是否使用相同的系统调用?

1 个答案:

答案 0 :(得分:9)

  1. 性能差异可能无法衡量。
  2. print函数在结尾处输出换行符;除非有要求,否则printf不会。
  3. print代码将参数转换为字符串,然后将它们发送到由OFS分隔的输出(输出字段分隔符)。
  4. printf代码可能需要在使用双格式(%16.8g或其他东西)格式化之前将字符串转换为double,以及类似的操作。
  5. 使用的系统调用将转移到write(2)或类似的两者,但是会有代码(可能<stdio.h>)分层。
  6. 所有这一切加起来:

    • 实施方式不同; printprintf更简单(因此更快)。
    • 对于大多数用途而言,差异可能无法衡量。
    • 如果能够满足您的需求,请使用print;在满足您的需求时使用printf
    • 不要担心。

    使用sprintf后跟print可能比直接使用printf要慢,所以不要。

    如有疑问,请测量。