繁体   English   中英

Linux中的C程序:输出重定向性能

[英]C Program in Linux: Output Redirection Performance

鉴于写入控制台有一些开销,将stderr和stdout重定向到/ dev / null可以节省这些开销并加快速度吗? 我需要这些语句来帮助调试并为我的应用程序提供状态更新,但现在我将它部署到嵌入式系统,将无法读取这些控制台输出。 我认为节省这种开销的一种简单方法是让应用程序将输出重定向到/ dev / null。

此外,如果没有人连接到控制台,写入控制台是否还会受到惩罚? (我假设是的)。

谢谢您的帮助。

是的,你将保存写入/ dev / null的一些处罚。 写入/ dev / null只是对函数的调用,该函数最终对您的数据不起作用,因此您最终将在写入时保存至少数据位置,以及一些数据传输。 使用写入stdout的小程序测试它并将输出重定向到/ dev / null,您将能够测量。

创建了一个简单的C程序,并在我的Linux笔记本电脑上向stderr吐出“这是一个错误消息\\ n”。 消息被循环打印100,000次。

没有重定向,程序花了6,104,888微秒。 运行重定向到/ dev / null导致程序在23,747微秒内完成。

因此,控制台非常慢,通过将您不需要的任何内容转储到/ dev / null或(更好)只是不首先打印它,可以节省大量时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM