C++ 在大目录中快速访问

C++ 在大目录中快速访问,c++,windows-7,c++11,ntfs,b-tree,C++,Windows 7,C++11,Ntfs,B Tree,我有一百万个文本文件(内容约为1kB),并反复处理一个随机文件 在Windows 7内部的C++程序中。我相信NTFS的b+树方法可以很快做到这一点 但是,因为我知道这些文件不会更改,所以我希望使用 RAM(即预加载后无硬盘读取) 我可以预加载所有一百万个文件(ReadFile,或类似的CreateFileMapping),但我不知道 如何将b+树放入RAM。是否有一个简单的解决方案或API,我不需要构建 白手起家的新树?有没有更快的方法 我也不想建立目录树;我只想把所有的文件放在一个文件夹里,

我有一百万个文本文件(内容约为1kB),并反复处理一个随机文件 在Windows 7内部的C++程序中。我相信NTFS的b+树方法可以很快做到这一点 但是,因为我知道这些文件不会更改,所以我希望使用 RAM(即预加载后无硬盘读取)

我可以预加载所有一百万个文件(ReadFile,或类似的CreateFileMapping),但我不知道 如何将b+树放入RAM。是否有一个简单的解决方案或API,我不需要构建 白手起家的新树?有没有更快的方法

我也不想建立目录树;我只想把所有的文件放在一个文件夹里,然后利用它 NTFS的树方法(如果可能);我在寻找一个“CreateDirectoryMapping”函数。(还有, 有没有可能Windows会在我第一次访问后自动缓存RAM中的b+树
使用它?我猜不是,这就是为什么我想故意在这个问题上缓存它。)

您第一次使用它时,它就在磁盘缓存中。
std::map
其中键是文件名?谢谢您提供的信息;有没有办法告诉Windows我需要将其保存在缓存中?如果不是的话,我就不能依赖这个…另外,我想重新定向到缓存会比直接使用RAM慢。在思考更多的时候,我不确定缓存是否定义良好…在我的评论中,我想Windows在我额外的RAM中缓存文件页,但Raymond可能指的是“L3缓存”,它应该更快(但我怀疑它是否足够大;单是b+树就应该有4MB左右)。不管怎样,有人能回答而不使用缓存吗?再说一遍,内存映射文件和使用
std::map
有什么问题?