Очень быстрая запись двоичного файла на C++

Я пытаюсь записать огромные объемы данных на свой твердотельный накопитель SSD (). И под огромным количеством я имею в виду 80 ГБ.

Я искал решения в Интернете, но лучшее, что я придумал, это:

#include <fstream>
const unsigned long long size = 64ULL*1024ULL*1024ULL;
unsigned long long a[size];
int main()
{
    std::fstream myfile;
    myfile = std::fstream("file.binary", std::ios::out | std::ios::binary);
    //Here would be some error handling
    for(int i = 0; i < 32; ++i){
        //Some calculations to fill a[]
        myfile.write((char*)&a,size*sizeof(unsigned long long));
    }
    myfile.close();
}

Скомпилированная с Visual Studio 2010 и полной оптимизацией и работающая под Windows7, эта программа достигает максимальной скорости около 20 МБ/с. Что меня действительно беспокоит, так это то, что Windows может копировать файлы с другого SSD на этот SSD со скоростью от 150 МБ/с до 200 МБ/с. Так минимум в 7 раз быстрее. Вот почему я думаю, что я должен быть в состоянии идти быстрее.

Любые идеи, как я могу ускорить свое письмо?

221
задан Amir 11 November 2018 в 11:01
поделиться