【问题标题】:C Program in Linux: Output Redirection PerformanceLinux 中的 C 程序:输出重定向性能
【发布时间】:2014-04-03 03:59:22
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

  • 为什么要写这些?为什么不使用标志,比如DEBUG,在需要时打印它们?
  • 大部分代码库已经编写,没有任何标志,所以我想避免向控制台输出一些输出:(

标签: c linux console stdout stderr


【解决方案1】:

是的,您将节省一些写入 /dev/null 的惩罚。写入 /dev/null 只是对一个函数的调用,该函数最终对您的数据不做任何事情,因此您最终将至少在写入时保存数据位置和一些数据传输。用一个写入stdout并将输出重定向到/dev/null的小程序测试一下,就可以测量了。

【讨论】:

    【解决方案2】:

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

    在没有重定向的情况下,程序耗时 6,104,888 微秒。重定向到 /dev/null 运行导致程序在 23,747 微秒内完成。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2013-09-06
      • 1970-01-01
      • 2023-03-10
      • 2020-10-24
      • 1970-01-01
      相关资源
      最近更新 更多