如何最好地阅读boost序列化存档?

时间:2011-09-07 10:13:50

标签: c++ serialization boost buffer fstream

我想我的问题部分来自这个问题:std::ifstream buffer caching.我有一个提升序列化存档,并且正在按照帮助中的建议使用&运算符读取它。我的理解是,对于输入和输出操作,这会转换为<<>>。现在根据上述问题判断,这些运算符与fstream一起不能提供最佳性能。

我需要做的是读取几个100k对象并按顺序处理它们然后删除它们。现在我确实做了

  1. 读取一个对象2.处理3.删除4.重复。
  2. 我想知道是否应将此更改为

    1. 将所有对象读入队列2.处理队列3.删除所有内容
    2. 或者我是否应该为文件实现一些缓冲区并首先将二进制文件读入缓冲区?

      或者可能启动第二个线程并让第二个线程通过一些线程切换读取文件?

      并且部分重复上述问题,但有人有更多尝试优化fstream缓冲区的经验,或者甚至是一个有效的例子吗?

      由于

1 个答案:

答案 0 :(得分:0)

改变它没有意义。默认情况下,无论如何它都会通过缓冲读卡器,而这个读卡器无论如何都会以4k块的形式读取硬盘。逐个阅读它们可以更好地回收内存。唯一可能有意义的是将4k更改为不同的数字。