awk print vs printf函数

sta*_*tic 4 io awk printf

awk有两个输出功能:printprintf.

  • 它们的实现是否awk完全不同?
  • 关于性能/速度有什么区别(如果可能的话 - 理论上,不仅仅是time命令行上的" ")?
  • 他们使用相同的系统调用吗?

Jon*_*ler 10

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

所有这些加起来:

  • 实现是不同的; print比...更简单(因此更快)printf.
  • 对于大多数目的而言,差异可能无法衡量.
  • 使用print它,如果它会做你需要的; 使用printf时,它确实你需要什么.
  • 别担心.

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

如有疑问,请测量.