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

Is using memory mapped files possible/worthwhile for writing/reading protocol buffers?

本文关键字:读取 协议 文件 缓冲区 内存 值得 是否 映射      更新时间:2023-10-16

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

我想知道是否可以使用内存映射文件,这样做是否会带来显著的性能改进。

谢谢。

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

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