Мне нужно как можно быстрее отсортировать файл размером 10 ГБ, содержащий список чисел, используя только 100 МБ памяти.Я разбиваю их на куски, а затем объединяю их.
В настоящее время я использую указатели файлов C, поскольку они работают быстрее, чем операции ввода-вывода файлов c ++ (по крайней мере, в моей системе).
Я пыталсядля файла 1 ГБ, и мой код работает нормально, но он выдает ошибку сегментации, как только я fscanf после открытия файла 10 ГБ.
FILE *fin;
FILE *fout;
fin = fopen( filename, "r" );
while( 1 ) {
// throws the error here
for( i = 0; i < MAX && ( fscanf( fin, "%d", &temp ) != EOF ); i++ ) {
v[i] = temp;
}
Что я должен использовать вместо этого?
И делатьУ вас есть предложения о том, как это сделать наилучшим образом?