从CD / DVD读取数据。 Windows是否会创建某种临时缓存?

时间:2013-11-19 09:49:53

标签: .net windows caching cd

作为一个简短的解释,在尝试从光盘读取数据的过程中,在使用某些.net代码时,我一直很烦恼。该程序用最简单的术语使用itextsharp来检查PDF文件的页数(如果重要的话)。来自CD驱动器的读取速度已经非常不一致,甚至尝试使用相同的代码/光盘来重复测试等。然后我有一点尤里卡时刻。至少有一个人要问一些人比我更有信息。

似乎第一次枚举光盘上的文件比后续迭代花费的时间长得多。然后我意识到当我第一次读取光盘上的数据时,我的光盘驱动器指示灯会亮起,但是在后续运行相同的数据时它不会亮起(重新运行程序以查看相同的文件) ,基本上)。不是巧合,那些后来的阅读时间方式,速度更快。在关闭机会我的程序以某种方式存储此数据,我完全关闭Visual Studio,检查任务管理器的进程等,并重新打开VS.结果似乎是一样的。打开光盘驱动器并重新插入光盘?该过程重置(第一次缓慢等)

我在这里的假设必须是Windows中的一些机制?暂时存储“某处”的光盘数据,当您再次调用该数据时,它会使用“存储在某处”而不是从光盘读取的数据。当你开始考虑从普通硬盘驱动器和CD读取信息的速度有多快时,从外行人的角度来看,这当然是有道理的。我猜这是某些圈子中常见的知识,但老实说,在这种情况下,我并没有那么多使用物理媒体。它通常更像是“在本地复制然后做东西”的过程。

所以我的问题是“那是一件事吗?”还是有人可能会发现其他某种疯狂行为?如果我的猜测与我的距离不远,有没有办法可以更有效地使用这种“缓存”功能?例如在我尝试从中读取之前强制它暂时缓存光盘或其他东西?或者任何其他人可能提出的任何其他类型的“最佳实践”想法。如果我能提供任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

当然,光驱与硬盘没什么区别,它们的寻道时间要慢得多。对于这两者而言,文件系统缓存绝对至关重要,它保留了先前从驱动器读取的数据的副本。 Windows为这个缓存提供了相当大的RAM,在具有足够RAM的现代机器上轻松实现了数GB。另一个核心原因是,在32位操作系统上,整个地址空间的一半专用于操作系统。

所以不可避免地,第一次访问驱动器的速度会很慢,缓存可能无法提供数据,而应用程序必须等待直到从磁盘读取数据。这是在机械时间而不是电子时间运行,您可以它用于光驱。光盘是CLV - 恒定线速度。轨道越靠近光盘中心,光盘必须旋转得越快。非常适合包装密度,非常糟糕的寻找时间。对光盘进行加速/加速可能会造成很大的冲击。硬盘驱动器也不那么安静。这需要很多毫秒。后续访问速度非常快,只是文件系统缓存数据的内存到内存副本,它以内存总线速度运行。 5 GB /秒及以上,大约一微秒的恒定开销。