是否可以使用内存映射文件来编写/读取协议缓冲区?

时间:2012-02-03 14:23:35

标签: c++ protocol-buffers

我正在使用FileOutputStream实例(由CodedOutputStream对象包装)来编写协议缓冲区输出。

我想知道是否可以使用内存映射文件,以及这样做是否会带来值得注意的性能提升。

感谢。

1 个答案:

答案 0 :(得分:1)

可以实现这一点,但你不会看到任何性能提升。在您描述的场景中,使用流对象和文件映射之间的唯一区别是哪个子系统正在执行I / O(启动读/写)。对于文件映射,内存管理器会处理为读取操作生成页面错误,并会在闲暇时保留脏(写入)页面。

对于序列化协议缓冲区,基于流的基于流的文件I / O是最简单,最便携的解决方案。