Написание бинарного файла на 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 раз быстрее. Вот почему я думаю, что смогу идти быстрее.
Любые идеи, как я могу ускорить свое письмо?