我的意思是:记忆越来越大,操作系统和编译器越来越聪明。因此我的问题是,如果我必须从文件中读取数据,那么实现缓存是否有意义?操作系统是否已将数据管理到内存中?
编辑确定更实用,我在更多文件中稀疏了1TB的数据,以及180GB的RAM。我需要不止一次读取一些这样的数据。实现像LRU这样的缓存是否有意义,或者当我从文件中读取时(使用c ++),操作系统将足够聪明以将这些数据保存在某处,以便从内存而不是从磁盘读取它们?
答案 0 :(得分:2)
取决于您使用的语言和库。很可能你实际上已经把东西缓存到内存中了。
通常,您希望缓存当前正在管理的内容,直到您准备好将更新的数据缓冲区提交回磁盘上的文件,因为磁盘I / O操作非常慢。
对于非常大的文件,您可能不希望由于内存限制而缓存整个数据,但您仍然希望缓存当前正在管理的数据块。
这是存储从最快(最昂贵)到最慢(最便宜)的数据的不同方法的一般图: CPU数据寄存器 - > CPU缓存 - > RAM - > SSD - >硬盘 - >键盘等。
HowStuffWorks.com对这个层次结构有很好的说明,整篇文章本身也是一个非常好的读物:http://computer.howstuffworks.com/computer-memory4.htm
编辑:您还可以查看其他similar discussion here。