【问题标题】:File Open Append efficiency decrease with file size文件打开附加效率随文件大小而降低
【发布时间】:2014-07-28 05:33:36
【问题描述】:

使用例如 C++ ofstream 类http://www.cplusplus.com/reference/fstream/ofstream/

如果我打开一个文件进行追加:

std::ofstream myOutputFile;
myOutputFile.open("/tmp/mytest.txt", ios::out | ios::app);
myOutputFile << "This is a line\n";
myOutputFile.close();
  • 执行时间是否取决于文件大小?
  • 这是否取决于我运行程序的操作系统?
  • 这是否取决于我正在编写的文件系统类型?

让我改一下

在使用 Ext3 文件系统的 RH Linux 5.9 上多次运行该程序时,执行时间是否会随着该程序运行的次数而增加(请注意文件大小随着每次执行而增加)?

同样的问题,但在 NTFS 文件系统上使用 W7 Professional?

我的观察是,在 RH Linux 上我们有恒定的时间,而在 W7 上,执行时间会增加(我进行了数百万次迭代的测试),但我不知道是否有任何其他变量可能会影响结果。

【问题讨论】:

  • 可能无法回答——没有人可以肯定地说出任何关于曾经发明的每个可能的操作系统上的每个可能的文件系统的任何事情。也就是说:在大多数典型系统上,它通常至少接近恒定时间。会有变化,但在大多数情况下,变化几乎与文件大小无关。

标签: c++ c file append ofstream


【解决方案1】:

文件大小:可能。文件系统通常具有随机访问权限,因此不应该这样做。

操作系统:是的。 (袖珍计算器 vs 数据库仓库?)

文件系统:是的。 (NFS 与 SSHFS 与软盘上的 FAT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 2015-07-08
    • 2012-02-17
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多