Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#26 06-06-11 16:04:41

Linups_Troolvalds
С нами Баг!
Откуда: Отовсюду
Здесь с 06-10-09
Сообщений: 2,100
LinuxChrome 14.0

Re: Разбить txt файл на части

Lord_Evil пишет:

Linups_Troolvalds, проверь мой скрипт на скорость.

"time" -f "Затрачено времени: %e, Макс.резидентный размер процесса (Кбайт): %M" cat  text| ./split.pl 
Затрачено времени: 0.30, Макс.резидентный размер процесса (Кбайт): 2560

Отредактировано Linups_Troolvalds (06-06-11 16:04:52)


.:``́3̶E̶P̶O̶W̶h̶`́`:.

Вне форума

#27 06-06-11 16:34:40

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Разбить txt файл на части

Linups_Troolvalds, и правда, страшно.
Ради интереса попробовал написать скрипт на повершелле, хоть и совсем не знаю этот язык.
Вот мой быдлокод:

$file = Get-Content file1.txt;        # Читаю файл file1.txt в массив строк
$numFiles = 0;                        # Порядковый номер выходного файла
$numStringPF = [System.Math]::Floor($file.Length / 5); # Число строк в выходном файле

for($i = 0; $i -lt $file.Length; $i++){                 # Перебираю строки
    if ($i % $numStringPF -eq 0  -and $numFiles -lt 5){ # Если выходной файл заполнился
        $numFiles = $numFiles +1                        # Увеличиваем номер выходного файла
    }
    echo $file[$i] >> "text$numFiles" 
}

-eq - это оператор сравнения,
-lt - меньше,
-gt - больше.

Вне форума

#28 06-06-11 18:01:43

Linups_Troolvalds
С нами Баг!
Откуда: Отовсюду
Здесь с 06-10-09
Сообщений: 2,100
LinuxChrome 14.0

Re: Разбить txt файл на части

Дестер пишет:

Вот мой быдлокод:

Выполняется значительно медленнее, чем мой скрипт в cygwin. Памяти, само собой, меньше потребляет, потому что нативное приложение.
Для 1000 строк:

$ /usr/bin/time -f "Использовано времени: %e. Макс.объем в памяти: %M" ./split.sh text
Использовано времени: 0.26. Макс.объем в памяти: 2162688

$ /usr/bin/time -f "Использовано времени: %e. Макс.объем в памяти: %M" "powershell" "c:\cygwin\split.ps1"
Использовано времени: 2.87. Макс.объем в памяти: 230656

А теперь для миллиона строк:

$ /usr/bin/time -f "Использовано времени: %e. Макс.объем в памяти: %M" ./split.sh text
Использовано времени: 0.85. Макс.объем в памяти: 2097152

$ /usr/bin/time -f "Использовано времени: %e. Макс.объем в памяти: %M" "powershell" "c:\cygwin\split.ps1"
Command terminated by signal 2
Использовано времени: 82.14. Макс.объем в памяти: 226304

Извиняйте, не дождался. Когда прервал, файл «text1» имел размер 422 Кб.
Насчет памяти я не уверен, что тут можно что-то сказать. А вот насчет времени выполнения – убедитесь сами.

Отредактировано Linups_Troolvalds (06-06-11 18:03:14)


.:``́3̶E̶P̶O̶W̶h̶`́`:.

Вне форума

#29 06-06-11 18:08:16

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Разбить txt файл на части

Да, PowerShell медлителен.

 (1..10000) > file1 

выполнялось ~4 секунды.

Вне форума

#30 06-06-11 20:45:39

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
Windows 7Opera 11.01

Re: Разбить txt файл на части

Linups_Troolvalds пишет:
Lord_Evil пишет:

Linups_Troolvalds, проверь мой скрипт на скорость.

"time" -f "Затрачено времени: %e, Макс.резидентный размер процесса (Кбайт): %M" cat  text| ./split.pl 
Затрачено времени: 0.30, Макс.резидентный размер процесса (Кбайт): 2560

Спасибо, тоже не плохой результат, если сравнить с пхп.. 0_0 и памяти сожрало меньше всех ))


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.009 сек, 7 запросов выполнено - Использовано памяти: 1.68 Мбайт (Пик: 1.78 Мбайт) ]