gpt4 book ai didi

performance - 为顺序访问优化磁盘数据的位置

转载 作者:行者123 更新时间:2023-12-04 11:46:24 25 4
gpt4 key购买 nike

我需要在大约 1k 块的磁盘上存储大量数据。我将以一种难以预测但可能存在模式的方式访问这些对象。

是否有我可以使用的算法或启发式方法,可以根据我的访问模式重新排列磁盘上的对象,以尝试最大化顺序访问,从而最小化磁盘寻道时间?

最佳答案

在现代操作系统(Windows、Linux 等)上,您绝对无法优化寻道时间!原因如下:

  • 您处于一个先发制人的多任务系统中。您的应用程序及其所有数据可以随时刷新到磁盘 - 用户切换任务、屏幕保护程序启动、电池电量耗尽等。
  • 您不能保证文件在磁盘上是连续的。执行 Aaron 的第一个要点并不能确保文件不碎片化。当您开始写入文件时,操作系统不知道文件将有多大,因此它可以将其放在一个很小的空间中,并在您向其中写入更多数据时将其分段。
  • 仅当文件大小小于应用程序中的可用地址范围时,内存映射文件才有效。在 Win32 上,可用地址空间量约为 2Gb - 应用程序使用的内存。映射较大的文件通常涉及取消映射和重新映射文​​件的部分,这不是最好的做法。
  • 将数据放在文件的中心是没有帮助的,因为众所周知,文件的中心部分可能是最碎片化的部分。

  • 转述 Raymond Chen ,如果您必须询问操作系统限制,您可能做错了什么。将您的文件系统视为一个不可变的黑匣子,它就是这样(我知道,您可以使用 RAID 等来提供帮助)。

    您必须采取的第一步(并且必须在您进行优化时采取)是衡量您目前所拥有的。永远不要假设任何事情。用硬数据验证一切。

    从您的帖子来看,您似乎还没有真正编写任何代码,或者,如果您已经编写了,那么目前没有性能问题。

    唯一真正的解决方案是着眼于更大的图景,并开发出在不停止应用程序的情况下从磁盘中获取数据的方法。这通常是通过异步访问和推测加载来实现的。如果您的应用程序总是访问磁盘并处理数据的小子集,您可能需要考虑重新组织数据,将所有有用的东西放在一个地方,将其他数据放在其他地方。如果不知道完整的问题域,就不可能真正有帮助。

    关于performance - 为顺序访问优化磁盘数据的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343963/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com