写入文件的功能和性能
Writing to file function and performances
当调用我的write函数时,编译器会看到文件需要保持打开状态,对吗?还是每次调用函数都会打开和关闭文件?此外,我的文件是否在结束时关闭,即使没有明确关闭它?这是处理写入同一文件的最佳方式吗?
void write(const std::string &filename, const std::string &text)
{
std::ofstream file(filename, std::ios_base::out | std::ios_base::app );
file << text << std::endl;
}
void write2(std::ofstream &file, const std::string &text)
{
file << text << std::endl;
}
int main(int argc, char** argv)
{
int count(0);
for (int i=0; i<10; ++i)
{
// Do heavy computing ...
++count;
std::ostringstream out; out << count;
write("test", out.str());
}
// Alternative
std::ofstream file("test", std::ios_base::out | std::ios_base::app );
count = 0;
for (int i=0; i<10; ++i)
{
// Do heavy computing ...
++count;
std::ostringstream out; out << count;
write2(file, out.str());
}
return 0;
}
std::ofstream file
将在其析构函数中关闭,在write
的末尾(如果通过异常退出,则更早)。因此,文件将在每次循环迭代时打开和关闭。http://en.cppreference.com/w/cpp/io/basic_ofstream
也许您可以创建一个包含文件的小包装器类,并具有write
成员函数,或者将write
更改为std::ofstream&
,这是您在循环上方创建的。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 多态性和功能结合
- Msgpack能否提供更好的性能和与Python的struct.pack()相同的功能?
- C++分离功能,实现性能优化
- MPI 二进制文件 I/O 基本功能和性能问题
- C 功能性能问题
- 多线程功能性能比单线螺纹差
- C 性能:通过参考通过对象与功能的对象传递
- 用户定义功能的返回值的分配:性能
- 虚拟方法与std ::功能成员变量在性能方面
- 是否有更好的方法(性能提高 /内置功能)获得矩形的旋转角度
- 辅助功能级别对性能或速度的影响
- CPP 中速度性能的测试功能
- 使用记忆功能观察到的奇怪性能
- if/else vs虚拟功能:设计性能
- Windows计时器功能的性能
- 功能原型设计会影响性能吗
- 写入文件的功能和性能
- 为什么OpenCV BOW集群功能运行很慢?如何提高其性能