gpt4 book ai didi

c - 在 C 中有效地重定向输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:18 24 4
gpt4 key购买 nike

我想知道这两个提示行中的哪一个在性能方面更好:

  • ./function input > output.txt
  • ./function input output.txt

现在,一些上下文,我的函数只使用 fprintf 来打印输出,例如:

fprintf(output," whatever");

那么,上面提到的备选方案中哪一个在性能方面表现更好?重定向标准输出还是直接在文件中打印?

最佳答案

这两种方法之间的区别仅在于哪个进程打开文件进行写入和关闭它。所以在运行程序时没有性能差异。五个(stdin、stdout、stderr、“input”和“output.txt”)文件描述符打开而不是只有四个(将输出写入 stdout 时)这一事实没有区别。

当然,为了让您的程序以完全相同的方式运行,无论是写入 stdout 还是写入文件,它都必须以行缓冲方式写入文件(写入 stdout 时默认情况下也是如此)。

如果你没有像这样 setvbuf(stream, (char *) NULL, _IOLBF, 0);(取自 setvbuf() 的联机帮助页)您的程序将使用 block 缓冲,在大多数情况下,这比重定向到 stdout 更快。

因此,如果允许您的程序对其输出使用 block 缓冲,则./function input output.txt 会更快。 (但是关于你的问题的评论是有效的:一定要衡量真实的表现!)

关于c - 在 C 中有效地重定向输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13891670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com