Winapi 如何提高通用I/O与文件映射的一致性

Winapi 如何提高通用I/O与文件映射的一致性,winapi,file-io,io,file-mapping,Winapi,File Io,Io,File Mapping,文件映射很好,但是对于32位系统上相对较大的文件,应该忘记它,使用通用文件i/o实现所有功能。对于大型随机读写,系统缓存几乎与文件映射一样有效。但是对于小文件区域周围的小操作,差异是巨大的,文件i/o比文件映射文件的等效操作慢十倍。后者主要是因为对SetFilePointer、ReadFile、WriteFile的多次调用,甚至对一些小动作也是如此 因此,我想实现或使用某种缓存(或者一些技巧),这种缓存应该可以有效地用于小的读/写操作,但我不需要复杂的缓存,因为对于大的操作,Windows做得很

文件映射很好,但是对于32位系统上相对较大的文件,应该忘记它,使用通用文件i/o实现所有功能。对于大型随机读写,系统缓存几乎与文件映射一样有效。但是对于小文件区域周围的小操作,差异是巨大的,文件i/o比文件映射文件的等效操作慢十倍。后者主要是因为对SetFilePointer、ReadFile、WriteFile的多次调用,甚至对一些小动作也是如此

因此,我想实现或使用某种缓存(或者一些技巧),这种缓存应该可以有效地用于小的读/写操作,但我不需要复杂的缓存,因为对于大的操作,Windows做得很好。有没有一些已知的方法

谢谢


马克斯< /P> < P>回答我自己的问题,为今后考虑类似的方法

看起来最好的方法是在文件上支持多缓冲映射视图。在这种情况下,数组允许快速访问指向内存块(VIE)的指针,如果根据请求的偏移量计算的指针有效,则应该只访问数据,如果无效,则可以选择分配新视图,并将视图总数保持在某个限值。我在阅读和写作中都比较快地实现了这一点,结果非常有希望