ฉันกำลังพยายามเขียนข้อมูลจำนวนมากบน SSD ของฉัน (โซลิดสเตทไดรฟ์) และโดยจำนวนมากฉันหมายถึง 80GB
ฉันเรียกค้นเว็บเพื่อหาแนวทางแก้ไข แต่สิ่งที่ดีที่สุดที่ฉันพบคือ:
#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 โปรแกรมนี้มีขนาดสูงสุด 20MB / s สิ่งที่รบกวนจิตใจฉันจริงๆคือ Windows สามารถคัดลอกไฟล์จาก SSD อื่นไปยัง SSD นี้ได้ที่ระหว่าง 150MB / s และ 200MB / s ดังนั้นอย่างน้อย 7 ครั้งเร็วขึ้น นั่นเป็นเหตุผลที่ฉันคิดว่าฉันควรจะไปได้เร็วขึ้น
ความคิดใดที่ฉันสามารถเพิ่มความเร็วในการเขียนของฉันได้อย่างไร
fwrite()
ฉันสามารถรับ 80% ของความเร็วในการเขียนสูงสุด เฉพาะกับที่FILE_FLAG_NO_BUFFERING
ฉันเคยได้รับความเร็วสูงสุด