最有效的方式写入控制台?

时间:2012-06-19 22:35:51

标签: c++ windows console

我想创建一个iostream类型类。我想找到一种最有效的方法来将一组字符写入屏幕。 思路:

printf-我不希望自己需要进行类型格式化。
WriteConsole-读取它比printf慢?真/假?
*装配 - 不知道如何
其他

*我主要担心的是我是否能找到如何做到这一点。我没有时间匆忙。

编辑:出于某种原因WriteConsole速度较慢。

3 个答案:

答案 0 :(得分:3)

使用“fwrite”:

fwrite( buffer, size, 1, stderr );

这比你需要的要快得多。而且你有一个奖励,你可以让你的iostream类不仅可以写入控制台,也可以写入文件。

答案 1 :(得分:1)

我建议尝试一些方法(你已经提到了一些)并对结果进行基准测试。您可能会对结果感到惊讶,但即使它们符合您的预期,您至少可以确定您正在尽力而为。但是对于记录,如果你发现比printf快得多,我会感到惊讶。

最实用的编码方式(根据我的经验)遵循以下几点:

  1. 获得功能上的表现。
  2. 设置基准测试以测试您的解决方案是否足够快。
  3. 如果速度不够快,请尝试别的,然后再回到2。
  4. 如果它足够快你就完成了!
  5. 听起来你甚至没有从你的问题开始设计/编码。谨防过早优化......

答案 2 :(得分:1)

我发现对于使用WriteConsoleOutputCharacter()平均值的Windows,与fwrite()的{​​{1}}平均值相同,如果您不使用stdout,则需要少一个文件。两者都非常快。我没有测试<stdio.h>。我可能也没有使用那么好的基准测试。至于过早的优化,我必须首先解决这个问题,为控制台窗口创建一个很酷的小库,或多或少地把它变成一个基于Windows的环境,并有一个管理它的总体系统。我将这个系统用于大学和个人文本游戏。对于使用FillConsoleOutputCharacter()进行日志记录和类似行为,尽管速度慢(呃),朋友们也可以做同样的工作。