我有一个应用程序需要以最高性能创建许多小文件(以后可能会读取不到 1% 的文件),并且我想避免使用异步文件 API 来保持代码的简单性。写入的总文件的大小无法预先确定,因此我认为要实现最大性能,我需要:
1.Windows 将所有未使用的 RAM 用于缓存(尤其是文件写入),不考虑可靠性或其他问题。如果我有超过 1GB 的未使用 RAM 并且我创建了一百万个 1KB 的文件,我希望 Windows 会立即报告“DONE”,即使它还没有向磁盘写入任何内容。
或者
2.基于内存的文件系统,由真实的磁盘文件系统支持。每当我写文件时,它应该首先只在内存中写入所有内容,然后在后台更新磁盘文件系统。除非没有足够的可用内存,否则同步调用不会延迟。请注意,它与 Windows 上的 tmpfs 或 RAM 磁盘实现不同,因为它们需要固定数量的内存并在没有足够 RAM 时使用页面文件。
对于选项 1,我测试了 VHD 文件 - 虽然它在某些配置下确实提供了高达 50% 的总性能提升,但它仍然会刷新到磁盘并导致写入不必要地等待。看来我无法禁用日记功能或进一步调整写入缓存行为.....
对于选项 2,我还没有找到类似的东西.....这样的东西存在吗?