c ++ Самый быстрый способ записи / чтения массива шорт в / из файла - PullRequest
2 голосов
/ 03 марта 2011

Какой самый быстрый способ записать массив беззнаковых коротких значений в файл, а затем какой самый быстрый способ прочитать их в другом приложении?

Также это будет на яблочной машине с снежным барсом.

Ответы [ 3 ]

4 голосов
/ 03 марта 2011

Если вы не беспокоитесь о кроссплатформенной совместимости, просто запишите их все в двоичном виде:

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 голос
/ 03 марта 2011

Вы не можете идти быстрее, чем отображать файл в память и записывать в эту память. Это позволяет избежать буферизации stdio и копирования данных между пользовательским пространством и ядром.

1 голос
/ 03 марта 2011

Существует около тысячи подходов к этому, начиная от простого файлового ввода-вывода и заканчивая сжатием данных в памяти в любом формате (zlib?) И затем записывая их в файл.Это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...