4

我想做一个 iostream 类型的类。我想找到将一组字符写入屏幕的最有效方法。想法:

printf-我不想要我自己需要的类型格式化。
WriteConsole-Read 是否比 printf 慢?真假?
*组装-不知道
其他怎么样?

*我主要关心的是我是否能找到方法。就时间而言,我没有任何着急。

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

4

3 回答 3

4

使用“fwrite”:

fwrite( buffer, size, 1, stderr );

这将比您需要的要快得多。而且你有一个好处,你可以让你的 iostream 类不仅可以写入控制台,还可以写入文件。

于 2012-06-21T19:43:06.173 回答
1

我建议尝试一些方法(你已经提到了几个)并对结果进行基准测试。你可能会对你的结果感到惊讶,但即使结果如你所愿,你至少可以确定你正在尽你所能。不过,作为记录,如果您发现比 printf 快得多,我会感到惊讶。

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

  1. 得到功能上执行的东西。
  2. 设置一个基准来测试您的解决方案是否足够快。
  3. 如果不够快,请尝试其他方法,然后返回 2。
  4. 如果它足够快,你就完成了!

听起来您甚至还没有从您的问题开始设计/编码。小心过早的优化...

于 2012-06-19T22:45:52.340 回答
1

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

于 2015-04-12T08:08:48.217 回答