Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux中的C程序:输出重定向性能_C_Linux_Console_Stdout_Stderr - Fatal编程技术网

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

Linux中的C程序:输出重定向性能,c,linux,console,stdout,stderr,C,Linux,Console,Stdout,Stderr,考虑到写入控制台时会有一些开销,将stderr和stdout重定向到/dev/null是否会节省这些开销并更快?我需要这些语句来帮助调试我的应用程序并提供状态更新,但是现在我正在将其部署到嵌入式系统中,没有人可以读取这些控制台输出。我认为节省这一开销的简单方法是让应用程序将输出重定向到/dev/null 此外,如果没有人连接到控制台,写入控制台是否仍然会受到惩罚?(我想是的) 谢谢您的帮助。是的,您将在写入/dev/null时节省一些惩罚。写入/dev/null只是调用一个函数,该函数最终对数据

考虑到写入控制台时会有一些开销,将stderr和stdout重定向到/dev/null是否会节省这些开销并更快?我需要这些语句来帮助调试我的应用程序并提供状态更新,但是现在我正在将其部署到嵌入式系统中,没有人可以读取这些控制台输出。我认为节省这一开销的简单方法是让应用程序将输出重定向到/dev/null

此外,如果没有人连接到控制台,写入控制台是否仍然会受到惩罚?(我想是的)


谢谢您的帮助。

是的,您将在写入/dev/null时节省一些惩罚。写入/dev/null只是调用一个函数,该函数最终对数据不做任何处理,所以您将在写入时至少保存数据位置,并进行一些数据传输。用一个写标准输出的小程序测试它,并将输出重定向到/dev/null,您将能够测量。

是的,您将节省一些写入/dev/null的惩罚。写入/dev/null只是调用一个函数,该函数最终对数据不做任何处理,所以您将在写入时至少保存数据位置,并进行一些数据传输。用一个小程序测试它,该程序写入stdout并将输出重定向到/dev/null,您将能够测量。

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

在没有重定向的情况下,程序花费了6104888微秒。重定向到/dev/null运行导致程序在23747微秒内完成


因此,控制台的运行速度非常慢,可以通过转储您不需要/dev/null的任何内容来节省大量时间,或者(更好的是)一开始就不打印它。

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

在没有重定向的情况下,程序花费了6104888微秒。重定向到/dev/null运行导致程序在23747微秒内完成


因此,控制台的速度非常慢,可以通过转储任何不需要/dev/null的内容来节省大量时间,或者(更好的是)一开始就不打印它。

为什么要编写这些内容?为什么不在需要时使用标记(比如
DEBUG
)来打印这些标记呢?有很大一部分代码库已经编写好了,没有任何标记,因此我希望避免控制台的一些输出:(为什么要写这些?为什么不使用一个标志,比如说
DEBUG
,在需要时打印它们呢?有很大一部分代码库已经编写好了,没有任何标志,所以我想避免控制台的一些输出:(