我想知道在调用fprintf(file,...)时,在unix上使用输出重定向是否有任何好处/坏处;
编辑:进一步澄清。我正在编写一个需要对磁盘进行数据转储的程序:50000多行,40个字符的数据。
程序本身占用了大量的内存,我需要知道在程序中分配缓冲区是否会比使用unix输出重定向产生更大的内存损失。
我注意到输出时间的差异在误差范围内。两者都非常有效,唯一的区别是我需要编写额外的代码来写入没有unix重定向的文件。
但是,我在基准测试中的大部分尝试都遇到了同样的问题:如果我使用输出重定向,它们不显示为缓冲输出分配了多少内存。
答案 0 :(得分:0)
如果存在任何差异,则取决于所选文件描述符是否为buffered。 stderr
通常是无缓冲的,stdout
是缓冲的,所以如果对后者使用输出重定向,那么与写入{{1}相比,您可能会注意到一个微小的,可能但不太可能的统计上显着的加速}。
写入的基本机制在两种情况下都是相同的,它是初始化阶段(打开和分配文件描述符)将是不同的,但它只执行一次。