А нет ли в природе либы на С, которая бы за меня отсортировала нереально огромные объемы данных (десятки гигабайт) с применением временных файлов на диске (а подругому и никак)?
>> Кстати, давно хотел узнать, а есть ли у sort ограничение на размер сортируемого файла? Ну, типа 4 гиг на 32-битной машине?
> ты ж вроде физик - нагенери файлик гигов на десять да проверь :)
ps: если лениво генерить давай свой e-mail и я тебе вышлю файлик.
Только нужно не забыть что временные файлы он создает в TMPDIR (по умолчанию /tmp). А /tmp часто делают в tmpfs -- tmpfs хоть и может быть очень большим (лишь бы свопа хватило), но по дефолту он всего лишь половина ОЗУ. Так что есть смысл задать TMPDIR=/var/tmp
Слишком долго, у меня в разы быстрее на более слабом железе. Задайте буфер ему побольше параметром -S 2G и сжатие временных файлов параметром --compress-programm=gzip
> Слишком долго, у меня в разы быстрее на более слабом железе.
Можно цифру?
А работает, действительно, как-то уж слишком долго! 120гиговый файл лопатит уже 9 часов, набрала в 14 временных файлах в сумме порядка 50 гиг. Файлы равномерно по времени создаёт и бросает, atime не меняется -- судя по всему, это предсортированные патчи, размера они все одинакового -- по 3.5 гига -- то есть к концу (часов через 10) их будет около 35. Если она станет потом 35-way merge делать, файлуха встанет на уши: параллельное рандомное чтение -- самая тяжелая операция. Посмотрим...
Как с этим файлом покончит, возьмется за 388-гиговый.
Потом попробую буфер побольше ей засунуть. Кстати, какой у неё по умолчанию сидит? Странная цифра -- 3.5 гига... А сама программа сейчас отгрызает 9.2 гига оперативки - куда ей столько, если предсортированные патчи по 3.5?
Мой сорт про опцию --compress-programm ничего не знает.
$sort --v
sort (GNU coreutils) 6.4
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>;.
There is NO WARRANTY, to the extent permitted by law.