【问题标题】:fastest way to parse/jump through large binary file with sized elements解析/跳转具有大小元素的大型二进制文件的最快方法
【发布时间】:2015-08-19 20:28:06
【问题描述】:

我需要解析包含一系列元素的二进制文件。元素的格式如下: 4 个字节:元素名称 4 个字节:元素的大小 可变大小:元素的数据

我只需要解析文件并提取每个元素的名称、位置和大小。典型元素大小约为 100kb,典型文件大小约为 10GB。

浏览此类文件的最快方法是什么?读取文件的所有数据,寻找下一个元素,其他方法?

文件是本地文件还是网络文件有区别吗?

【问题讨论】:

  • 写一些测试代码并测量。
  • 我会使用内存映射文件。根据需要让操作系统页面进入(跳过其他所有内容)。

标签: c++ windows parsing


【解决方案1】:

您不想做的一件事是使用无缓冲读取(即操作系统调用)来读取每个单独的元素。 您可以通过缓冲读取的幼稚方法获得良好的性能。如果内存不是问题,您可能会通过使用内存映射文件和使用预取线程来填充映射来节省一些时间。

【讨论】:

    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 2019-10-02
    • 2019-10-20
    • 2011-01-24
    • 1970-01-01
    • 2019-09-12
    • 2013-04-07
    相关资源
    最近更新 更多