gpt4 book ai didi

c# - 从硬盘快速读取

转载 作者:行者123 更新时间:2023-11-30 17:11:27 25 4
gpt4 key购买 nike

我创建了一个基于两个文件的虚拟文件系统(非常类似于 fat)。

  1. 第一个文件 - 分配表。

它存储文件分配信息(实际上它不是文件但不关心它)

每条记录的结构如下:

  1. 名称 - 固定大小(100 字节)。前 4 个字节是字符串长度
  2. Length - 4字节,文件总长度
  3. StartCluster - 起始簇的 4 字节 id
  4. EndCluster - 结束簇的 4 字节 id

每个条目都有固定的大小,我在内存中有哈希表,这有助于我找到每个条目的位置。

  1. 第二个文件 - 虚拟驱动器

基于集群的VD。每个簇都有固定的大小——256 字节。最后 4 个字节是指向文件链中下一个簇的指针。

问题是当我尝试读取所有文件时速度非常慢。我怎样才能提高性能?有什么快速读取硬盘的小技巧吗?

例如:按大块读取文件是个好主意吗?当我读取文件的一小部分时,操作系统会缓存文件吗?下次我只是从内存中获取数据而不是从 HD 中获取数据?

我有几个这样的问题可以在哪里得到答案?

最佳答案

一些选项;

  • 您可以扩大集群大小(256 字节很小,现在大多数操作系统使用 4KB+ 的集群)

  • 如果您读取所有文件,您可以根据 startCluster 进行排序,这样您就可以按照文件在磁盘上物理上彼此靠近的顺序读取文件。因此,每当操作系统获取 4K+ block 时,下一个文件很可能需要它的其他部分。

  • 您可以对虚拟磁盘文件进行碎片整理

  • 您似乎确信这是磁盘读取问题。您是否检查过您在刚刚读取文件后对文件所做的操作是否不是最慢的部分?

  • 大量随机访问是 SSD 存储的优势所在。将虚拟磁盘移动到 SSD

关于c# - 从硬盘快速读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407526/

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