io - awk print 与 printf 函数

标签 io awk printf

awk中有两个输出函数:printprintf

  • 它们在 awk 中的实现有很大不同吗?
  • 性能/速度方面有何差异(如果可能 - 理论上,而不仅仅是命令行上的“时间”)?
  • 它们使用相同的系统调用吗?

最佳答案

  1. 性能差异可能无法衡量。
  2. print函数在末尾输出换行符; printf除非有要求,否则不会。
  3. print代码将参数转换为字符串,然后将它们发送到由 OFS(输出字段分隔符)分隔的输出。
  4. printf代码可能需要先将字符串转换为 double 型,然后再使用 double 型格式(%16.8g 或其他格式)和类似操作进行格式化。
  5. 使用的系统调用将是 write(2)或两者类似的东西,但上面会有代码(可能是 <stdio.h> )。

所有这些加起来就是:

  • 实现不同; printprintf 更简单(因此更快) .
  • 对于大多数用途来说,这种差异可能无法衡量。
  • 使用print它是否能满足您的需要;使用printf当它满足您的需要时。
  • 不用担心。

并使用 sprintf接下来是 print可能比使用 printf 慢直接,所以不要。

如有疑问,请进行测量。

关于io - awk print 与 printf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309563/

相关文章:

c - 非常简单的 C 字符串 : Storing and printing a string in a struct in C

c - 使用 printf 打印可变位数的 double

java - 将数据文件的内容读入内存中适当的对象数组中

python - 使用Python按行读取文件时出现OSError : [Errno 22] Invalid argument,

go - 是否有Go http方法将整个http响应转换为 byte slice ?

bash - 查找多个文件的公共(public)行

bash - awk 对一列求和并在每行输入中打印该总和

bash - 组合行时相当于 PHP 内爆的终端命令

C 获取所有打开的文件描述符

PHP 格式化带前导零的正负 float