在Windows应用程序中实现我自己的文件缓存有什么意义吗?

在Windows应用程序中实现我自己的文件缓存有什么意义吗?,windows,caching,disk,virtual-memory,ramdisk,Windows,Caching,Disk,Virtual Memory,Ramdisk,我有一个Delphi应用程序,它引用了一个包含28字节记录的数据文件。文件按顺序写入,但随机读取。数据文件被分成N个物理文件,这些文件以10兆左右的速度滚动,以提供一些磁盘问题的保险,因为我们只对最近的一个文件进行写入,我发现如果允许它变大,写入速度会越来越慢。启动时,我读取整个文件集并建立索引,以便在给定的虚拟记录编号中快速知道要查找哪个文件 作为拆分成N个文件的一部分,我实现了一个读缓存。我现在意识到Windows自己做了相当多的缓存,我想知道在我自己和磁盘文件之间插入另一个缓存是否有什么好

我有一个Delphi应用程序,它引用了一个包含28字节记录的数据文件。文件按顺序写入,但随机读取。数据文件被分成N个物理文件,这些文件以10兆左右的速度滚动,以提供一些磁盘问题的保险,因为我们只对最近的一个文件进行写入,我发现如果允许它变大,写入速度会越来越慢。启动时,我读取整个文件集并建立索引,以便在给定的虚拟记录编号中快速知道要查找哪个文件

作为拆分成N个文件的一部分,我实现了一个读缓存。我现在意识到Windows自己做了相当多的缓存,我想知道在我自己和磁盘文件之间插入另一个缓存是否有什么好处


感谢您的建议。

否。请更有效地使用现有文件缓存。

谢谢@Ignacio。为什么文件映射比仅仅依赖Windows本机磁盘文件缓存更快?我将如何从Delphi与它进行接口——可能有一个Windows API?它并不比文件缓存快;它是文件缓存。您可以直接操作文件缓存中的数据,而不是读取和写入文件,其余的由操作系统处理。我确信Delphi在
Windows
中公开了适当的API调用;如果没有,投诉。@Ignacio,嗯。。那么优势在哪里呢?目前我可能会写Seek(f,RecordNo);读(f,FRecord);。要使用文件映射,我可能会为每个数据文件设置一个文件映射,并用文件映射API调用替换seek/read。为什么这比查找/读取快(假设我想要的数据在Windows缓存中)?您的限制是物理内存的总量,一如既往。当然,当试图访问丢失的部分时出现页面错误时,部分映射将被调出或丢弃,并重新加载,与其他一些内存块依次交换或丢弃。