Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2013, 20:19   #1
stpdqstns
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 33
Лампочка Сортировка больших файлов.

Здравствуйте. Столкнулся со следующей проблемой: нужно отсортировать содержимое файла по возрастанию, размер файла более 4Gb, немного подумав, решил разбить исходный файл на кусочки по 50Mb, по отдельности сортируя их содержимое посредством std::sort, и далее поочередно сливая их std::merge, получается отсортированный файл. Потестил на файле в 650Mb, сортируется около 20-ти минут, процессор 2-х ядерный, загружается на 50%, а одним их основных условий задачи является максимальная загрузка CPU, подскажите, пожалуйста, как можно это осуществить? Советы по улучшению алгоритма также принимаются.
stpdqstns вне форума Ответить с цитированием
Старый 05.03.2013, 21:07   #2
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,657
По умолчанию

Что в файле? (тип данных)
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 05.03.2013, 21:41   #3
stpdqstns
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 33
По умолчанию

беззнаковые 4-х байтовые числа
stpdqstns вне форума Ответить с цитированием
Старый 05.03.2013, 21:52   #4
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,657
По умолчанию

Эта задача эффективно решается индексированием (упорядочение разложением в массив). Дважды (по младшему и старшему слову (паре байтов)).
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 05.03.2013, 22:07   #5
stpdqstns
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от MihalNik Посмотреть сообщение
Эта задача эффективно решается индексированием (упорядочение разложением в массив). Дважды (по младшему и старшему слову (паре байтов)).
не совсем вас понял
stpdqstns вне форума Ответить с цитированием
Старый 05.03.2013, 22:36   #6
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,657
По умолчанию

Подобные числа в очень большом кол-ве не упорядочивают на основе сравнения
Например, самое наивное, в 4-прохода:
1-ый:
Массив 2^16 - инкрементируется по младшему слову чисел
Последовательным сложением получают смещения чисел.
2-ой:
Числа записываются в новый файл аналогичного размера по вычисленным смещениями (которые также по ходу сдвигают). Делается буферизация, заводится еще массив, например, 2^16 x 1024 числа по 4 байта. И массив 2^16 с позициями в буфере.
При заполнении любого буфера - запись соотв. чисел в файл по соотв. смещению. В конце проход по всему массиву буферов и запись в файл что осталось.

Аналогичная процедура в 2 прохода с записью нового файла но только по старшим словам чисел.
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 05.03.2013, 22:52   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от stpdqstns Посмотреть сообщение
процессор 2-х ядерный, загружается на 50%, а одним их основных условий задачи является максимальная загрузка CPU, подскажите, пожалуйста, как можно это осуществить?
Запустите два потока, каждый сортирует один из файлов, по окончании берут следующий и т.д. По завершении всех файлов уже один поток сливает файлы.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка больших файлов Rita26 JavaScript, Ajax 2 09.08.2012 11:23
Загрузка больших файлов Rita26 Общие вопросы .NET 0 23.07.2012 14:47
Отправка больших файлов по почте pu4koff Софт 6 17.07.2012 19:35
Загруprf больших файлов в blob eldalex SQL, базы данных 4 12.10.2010 16:10
Открытие больших текстовых файлов sht0p0r Помощь студентам 4 16.12.2008 12:42