我已经基于两个文件创建了一个虚拟文件系统(非常类似于胖)。
它存储有关文件分配的信息(实际上它不是文件但不关心它)
每条记录都有以下结构:
每个条目都有固定的大小,我在内存中有哈希表,这有助于我找到每个条目的位置。
VD基于集群。每个群集都有固定大小 - 256个字节。最后4个字节是指向文件链中下一个簇的指针。
当我试图读取所有文件时,问题是速度非常慢。我怎样才能提高性能?有没有快速阅读硬盘的提示。
例如:用大块读取文件是个好主意吗?当我甚至阅读文件的一小部分时,操作系统会缓存文件吗?在下一次我只是从内存而不是从HD获取数据?
我有几个这样的问题,我可以得到答案吗?
答案 0 :(得分:2)
一些选项;
您可以扩大群集大小(256字节很小,大多数操作系统现在使用4KB +用于群集)
如果您阅读了所有文件,则可以根据startCluster进行排序,以便按照磁盘上彼此物理接近的顺序读取文件。因此,每当操作系统获取4K +块时,您更可能需要使用下一个文件的其他部分。
您可以对虚拟磁盘文件进行碎片整理
您似乎确信这是一个磁盘问题。你刚刚读完文件后,你是否检查过你对文件的处理不是很慢?
很多随机访问是SSD存储的亮点。将虚拟磁盘移动到SSD