c ++在文件中写入/读取短路数组的最快方法

时间:2011-03-03 10:34:30

标签: c++ arrays file-io

将无符号短值数组写入文件的最快方法是什么,然后在另一个应用程序中读取这些值的最快方法是什么?

此外,这将是一台运行雪豹的苹果机器。

3 个答案:

答案 0 :(得分:4)

如果您不担心跨平台兼容性,只需将它们全部写成二进制文件:

int save_shorts(const unsigned short* array, size_t num_shorts)
{
  int ok = 0;
  FILE* out = fopen("numbers.bin", "wb");

  if (out != NULL)
  {
    ok = fwrite(array, num_shorts * sizeof *array, 1, out) == 1;
    fclose(out);
  }
  return ok;
}

回读它们非常类似,当然还有fread()。你也可以使用C ++(二进制)流,但这很简单。

答案 1 :(得分:1)

这有很多种方法,从简单的文件I / O开始,以任何格式(zlib?)压缩内存中的数据,然后将其写入文件。这取决于你。

答案 2 :(得分:1)

你不能比将文件映射到内存并写入内存更快。这避免了stdio缓冲和在用户空间和内核之间复制数据。