【发布时间】: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),它根本没有帮助。