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