我目前正在用 C++(在 OSX 上)编写模拟。最大的时间精力用于存储数据,其中输出是双对 t 和 f(t) 的表。
到目前为止,我使用的是(简化的)代码:
ofstream ofs;
ofs.open("test");
for(int i = 0; i < 4e7; i++){
ofs << i;
}
ofs.close();
因为一切都存储在 1 和 0 中,我的猜测是,使用二进制格式会更省时。但是以下更改 (ios::binary) 并没有改善计算时间:
ofstream ofs;
ofs.open("test", ios::binary);
for(int i = 0; i < 4e7; i++){
ofs << i;
}
ofs.close();
我的猜测是错误的还是我需要添加一些东西?
最佳答案
不,不是真的。 std::cout
链接到控制台,其速度主要取决于操作系统。
也就是说,有一些简单的技巧可以加快控制台输出:
- 创建一个字符串流缓冲区并将其输出到一个
<<
中称呼。这大大提高了我的输出到达 Windows 控制台的速度。 - 使用
sync_with_stdio
从 C io 库中取消同步 C++ 流. - 如果您不需要输出可读,您可以写入原始字节并取消任何数字格式,但这是一个非常特殊的情况。
关于c++ - std::cout,二进制是一种更快的写入输出的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311660/