История изменений
Исправление www_linux_org_ru, (текущая версия) :
$ perl -We '$a=1; for($i=1;$i<10111222;++$i) { $a+=($a<<2); $a&=0x7FFFFFFF; print "$a\n";}' > 100m
$ time sort 100m > /dev/null
real 0m58.005s
user 0m57.792s
sys 0m0.216s
в то время как простейший merge sort должен делать примерно 27 проходов по памяти, что даст меньше 3 ГБ трафика (по памяти), который (я мерил) можно сделать за полсекунды (правда я мерил просто на чтение, и не мерил на чтение+запись, ну пусть тогда будет не полсекунды, а секунда)
sort, вообще-то, у меня создает временные файлы по 3мб, но схрена ли к ним так медленно идет обращение?
/tmp на быстрой почти пустой партиции (скорость диска около 50мб/с, но это и не должно влиять, т.к. памяти свободной дофига)
total used free shared buffers cached
Mem: 8198228 2443748 5754480 0 98212 1406100
-/+ buffers/cache: 939436 7258792
Swap: 7811064 122876 7688188
(подозреваю, что виноват алгоритм сортировки )
Исходная версия www_linux_org_ru, :
$ perl -We '$a=1; for($i=1;$i<10111222;++$i) { $a+=($a<<2); $a&=0x7FFFFFFF; print "$a\n";}' > 100m
$ time sort 100m > /dev/null
real 0m58.005s
user 0m57.792s
sys 0m0.216s
в то время как простейший merge sort должен делать примерно 27 проходов по памяти, что даст меньше 3 ГБ трафика (по памяти), который (я мерил) можно сделать за полсекунды (правда я мерил просто на чтение, и не мерил на чтение+запись, ну пусть тогда будет не полсекунды, а секунда)
sort, вообще-то, у меня создает временные файлы по 3мб, но схрена ли к ним так медленно идет обращение?