【发布时间】:2011-06-14 22:21:12
【问题描述】:
有什么方法可以让这个运行更快并且仍然做同样的事情?
#include <iostream>
int box[80][20];
void drawbox()
{
for(int y = 0; y < 20; y++)
{
for(int x = 0; x < 80; x++)
{
std::cout << char(box[x][y]);
}
}
}
int main(int argc, char* argv[])
{
drawbox();
return(0);
}
IDE:开发 C++ ||操作系统:Windows
【问题讨论】:
-
可能更快地构建一个字符串并输出一次,或者每个外部循环输出一次,即 1 或 20 个 couts,而不是 20*80=1600
-
@Marc B:缓冲 I/O 库应该会为您处理这些问题。不幸的是,C++ iostream 在缓冲和 I/O 方面都很慢。看看我问过的问题,如果你想看到一些很好的基准来展示它们有多悲惨。
-
@Marc B:为什么不把它作为一个真正的答案呢?
-
缓冲有助于实际 I/O 本身,但函数调用通常并非免费。 20 个输出每个 80 个字符几乎肯定会比 1600 个每个一个字符快。并不是因为它实际上将这些字符发送到 设备, 只是因为它正在构建和拆除堆栈帧等等。
-
@Drew:因为我只是在猜测。在我的生活中,我从来没有写过 C++ 程序的第一行。
标签: c++ performance console-application cout dev-c++