我想测试在bash脚本和C++程序中写入文件的性能。
这是bash脚本:
#!/bin/bash
while true; do
echo "something" >> bash.txt
done
每秒向文本文件添加了大约2-3 KB。
以下是C++代码:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream myfile;
myfile.open("cpp.txt");
while (true) {
myfile << "Writing this to a file Writing this to a file \n";
}
myfile.close();
}
这个操作在不到10秒的时间内就创建了一个约6GB的文本文件。
是什么让这个C++代码如此快,或者这个bash脚本如此慢?
while true; do ...; done >> bash.txt
。意思是将循环中的输出内容追加到名为bash.txt
的文件中。 - chepnerstrace
确认我的bash
每次都会打开并关闭bash.txt
文件。 - ascheplerwhile (true) { std::ofstream myfile("cpp.txt", std::ios::app); myfile << "Writing this to a file Writing this to a file \n"; }
}`(注意:本翻译为直译,可能不符合中文习惯表达方式) - user4581301zsh
中大约是两倍)。这是相当大的速度差异。 - marcelm