在awk
中有两个输出函数:print
和printf
。
- 它们在
awk
中的实现有很大不同吗? - 性能/速度方面有何差异(如果可能 - 理论上,而不仅仅是命令行上的“
时间
”)? - 它们使用相同的系统调用吗?
最佳答案
- 性能差异可能无法衡量。
print
函数在末尾输出换行符;printf
除非有要求,否则不会。print
代码将参数转换为字符串,然后将它们发送到由 OFS(输出字段分隔符)分隔的输出。printf
代码可能需要先将字符串转换为 double 型,然后再使用 double 型格式(%16.8g
或其他格式)和类似操作进行格式化。- 使用的系统调用将是
write(2)
或两者类似的东西,但上面会有代码(可能是<stdio.h>
)。
所有这些加起来就是:
- 实现不同;
print
比printf
更简单(因此更快) . - 对于大多数用途来说,这种差异可能无法衡量。
- 使用
print
它是否能满足您的需要;使用printf
当它满足您的需要时。 - 不用担心。
并使用 sprintf
接下来是 print
可能比使用 printf
慢直接,所以不要。
如有疑问,请进行测量。
关于io - awk print 与 printf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309563/