我正在处理具有以下情况的C/C++混合项目。如何构建应用程序层预取系统
我需要有一个循环遍历一个文件中非常小的块(很少更大的块)。理想情况下,我应该连续阅读一次。我认为在这种情况下更好的解决方案是将大块读入缓冲区并稍后使用,而不是在需要时立即读取它们。
问题是,我该如何平衡缓存大小?是否有任何我可以利用的着名算法/库?
UPDATE:(将标题)
感谢你们的答复,我知道有我们盒的工作不同层次的缓存机制。但对我而言这还不够。
我想我错过了重要的东西在这里。实际上,我正在构建一个现有框架的应用程序,在这个框架中,对引擎的请求读取往往会花费太多。 (是的,我相信引擎确实会利用操作系统和磁盘级别的缓存。)我正在尝试构建一个应用程序级预取系统。
想法?
这可能不值得担心,除非你有持续的阅读在所有地方进行。磁盘可以缓存大量数据;一般来说,我认为最高可达64 MB,而且它们的性能往往比您要求的高速缓存大得多。除此之外,我会建议提供一部分数据(可能是2或4 KB)。 – 2012-03-06 21:03:50
现代操作系统使用所有可用内存作为磁盘缓存,而不仅仅是64MB。 – BatchyX 2012-03-06 21:17:36
也许我应该说'磁盘缓冲区',我指的是硬盘中嵌入的硬件。 – 2012-03-06 21:20:30