在C中读取x-y二进制数据的最佳实践

时间:2019-01-28 20:13:23

标签: c binaryfiles

在我的代码的子例程中,我正在读取1000万行二进制整数,然后对其进行处理。在整个程序包中,此例程被调用了数千次。 我正在使用的代码是:

for(l=0 ; l < nr_lines; l++) { 
// I use two temporary integers to store the numbers            
  fread(&ah, sizeof(int),1,file);
  fread(&bh, sizeof(int),1,file);
// and place them in the the corresponding array
  a[l] = ah;
  b[l] = bh;
}

我想知道这种方法是否效率不高?首先将整个文件读入内存,然后将其解析为两个数组,这是一个更好的主意吗?

更新:

基于以下建议,我使用了以下代码:

// read the entire file in one array
fread(c, sizeof(int),2*nr_lines, file); 
// and parse the code
for(l=0 ; l < nr_lines; l++) { 
    a[l] = c[2*l];
    b[l] = c[2*l+1];
}

对于包含2 * 30M条目的二进制文件(2.5秒vs. 0.5秒),第二种方法在我的系统上快5倍。

0 个答案:

没有答案