Это определенно должно работать, если данные помещаются в адресное пространство (почти наверняка на 64-битных машинах; может или нет на 32-битных), но производительность во многом зависит от базового алгоритма, используемого qsort
и его свойства локальности данных.Одна проблема, которую нужно рассмотреть, это то, является ли количество элементов огромным или же каждый элемент имеет большой размер на диске.В последнем случае вам лучше выполнить mmap
, но выделить отдельный массив указателей для каждого элемента, а затем отсортировать массив указателей с функцией сравнения, которая сравнивает то, на что они указывают.Это значительно сократит количество перемещений данных в памяти, но в конце потребуется небольшая работа, если вы хотите сохранить выходные данные обратно в тот же файл.