我将编写一个基准测试工具来测试磁盘系统的IOPS和带宽混合,因此我将转而使用文件支持的IO内存映射。由于该工具将需要在POSIX和WinNT平台上运行,因此我不能只使用普通的旧的mmap。另外从我的理解你必须疯狂的Linux内核,整个文件将按顺序访问?这使我能够提升内存映射。在Windows,Linux和Max OS X上使用类似的质量驱动程序的Boost内存映射可能会给类似的硬件带来类似的性能吗?是否有人在系统中测试了Boost mmap?Boost mmap性能vs本地内存映射
回答
为什么你不基准,找到了吗?我会怀疑不会有性能差异,因为Boost仅仅提供了一个平台不可知的封装工具。另外,Windows NT平台提供了一种内存映射工具 - 它不像内存映射是Linux特有的功能。对于Windows,您需要CreateFile
,CreateFileMapping
和MapViewOfFile
。 Windows库的不同之处在于映射机器的创建与创建映射视图是分开的。否则,功能是等同的。呵呵,就像在POSIX上一样,你需要清理一下,在这种情况下用UnmapViewOfFile
就可以查看文件映射和文件句柄了,CloseHandle
。
在提交大量工作来实现这两种解决方案之前,值得问一下,以便您可以进行基准测试。一个简短的回答就是提升只是一个很小的包装器 – 2010-09-01 01:51:29
要在POSIX中创建同一个文件的多个地址映射,您只需使用相同的文件描述符多次调用mmap()。 – caf 2010-09-01 01:52:57
@Martin:一般来说是的,但在这种情况下,我们正在讨论可能的4个函数调用,而不管它需要什么来获得boost的设置工作。这不像实施这两种解决方案是一件非常复杂的事情。 @caf:我没有很好地解释自己......我已经重写了这一部分。 – 2010-09-01 02:09:29
- 1. mmap vs sbrk,性能对比
- 2. NET 4.0内存映射文件性能
- 3. 只写内存映射在boost?
- 4. mmap()在Linux内核中访问未映射的内存
- 5. 传统IO vs内存映射
- 6. istream vs内存映射文件?
- 7. 发送映射器vs valueinjecter或自动映射器性能
- 8. 本地存储vs cookie的性能
- 9. 如何使用mmap()映射物理内存
- 10. 将结构写入映射的内存文件(mmap)
- 11. 内存与mmap映射,并与mprotect一起使用
- 12. 内存映射
- 13. 当munmap是glibc时,mmap小内存将释放映射内存到OS?
- 14. 内存分配阈值(mmap vs malloc)
- 15. Linux共享内存:shmget()vs mmap()?
- 16. boost :: posix_time :: ptime是否安全地存储在Windows共享内存映射中?
- 17. boost :: interprocess_mutex vs进程本地boost :: mutex
- 18. 释放内存映射内存
- 19. mmap()vs malloc()返回地址
- 20. mmap(2)vs mmap(3)
- 21. 内存映射UIImage
- 22. 内存映射IO - 谁将地址映射到物理地址空间?
- 23. Win32内存映射文件与CRT fopen/fread的性能
- 24. SetFileBandwidthReservation是否会影响内存映射文件的性能?
- 25. C++:Boost进程间内存映射文件错误
- 26. 如何在boost :: interprocess中正确取消映射共享内存?
- 27. C++文件内存映射容器类似于std :: vector/boost :: array
- 28. 使用boost的内存映射二维数组
- 29. Boost iostream:如何将ifstream转换为内存映射文件?
- 30. 如何使用boost从内存映射文件访问内存块?
增强内存映射甚至比本地内存映射提示和一切都快! Boost很棒。每个人都应该使用Boost! - 签署了一个随机增强助推器。 – Omnifarious 2010-09-01 01:16:39