【问题标题】:What is the fastest way to print out to a terminal?打印到终端的最快方法是什么?
【发布时间】:2021-11-08 01:46:12
【问题描述】:

问题很简单,将字符串打印到终端的最快方法是什么?

我正在用 C++ 制作“ASCII 图形引擎”,尤其是在 Linux 上,我注意到使用一些大分辨率打印可能会很慢。

现在,当然,它非常快,但仍然如此。

我想知道什么是绝对最快的。我尝试过的一些事情只是用cout 打印,然后我意识到这很慢。

然后我打印了printf,这是一个巨大的差异。

我尝试通过将fwrite 与标准输出一起使用来更快地获得一些东西,但它并没有真正产生任何明显的差异。

我知道这也取决于终端模拟器,但我正在寻找在代码中最快的方法。

我注意到 Windows 终端非常快,您可以直接使用终端写入终端缓冲区,而不是打印到 stdout

在 Linux 上有什么类似的吗?

【问题讨论】:

  • 半开玩笑,但要真正快速使用 3D 加速 (opengl)。设置网格(正方形),根据终端的内容(例如 80 x 25 缓冲区)分配这些正方形的纹理。但这可能比您正在寻找的更多。
  • 是的,但这里的技巧是不要为这个项目使用任何图形库。
  • 您确定您在std::cout 上正确使用了sync_with_stdio() 吗?您确定已将终端驱动程序置于原始模式吗?
  • ?详述“终端驱动程序”。您的意思是仅使用ioctl 将终端置于原始模式吗?没试过,有没有更跨平台的解决方案?
  • 我已经测试了原始模式(使用 termios),它根本没有帮助。

标签: c++ linux terminal


【解决方案1】:

嘿,这可能对你有帮助

您可以使用echo "" 打印这是在终端上打印的最快方式

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 是的,但是,你不能在 C++ 中真正做到这一点,system() 可能比正常打印要慢。
【解决方案2】:

嗯,echo “text” 是最快的方法。另一个最快的方法是std::cout,它比printf 快得多,因为它在运行时不解析文本。 cout 较慢,因为它与 stdio 同步,将 std::ios_base::sync_with_stdio(false) 添加到您的主函数以使 cout 更快

【讨论】:

  • 小问题:禁用 ANSI 转义序列,例如我需要移动光标。
猜你喜欢
  • 2018-07-21
  • 2012-03-27
  • 2011-10-09
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多