【发布时间】:2011-12-07 12:28:01
【问题描述】:
我有一个中等大小的二进制文件,由这样的独立块组成:
标题1 数据1 标头2 数据2 标题3 数据3 ...块的数量、每个块的大小和文件的总大小变化很大,但典型的数字是 ~1000 个块,平均块大小为 100kb。这些文件是由我无法控制的外部应用程序生成的,但我想尽快阅读它们。在许多情况下,我只对一小部分(即 10 %)块感兴趣,我将针对这种情况进行优化。
我目前的实现是这样的:
- 打开文件并读取所有标题 - 使用标题中的信息 fseek() 到下一个标题位置;保留一个打开的 FILE * 指针。
- 当请求数据时,使用 fseek() 定位数据块,读取所有数据并返回。
这很好用 - 但我在想也许(?)可以使用例如加快速度。 aio、mmap 或其他我只听说过的技术。
有什么想法吗?
乔金
【问题讨论】: