LINUX.ORG.RU
ФорумAdmin

Теоритический вопрос по записи в файл из shell


0

0


в чем разница между двумя скриптами?:

==== 1 ====
echo -n > $OUTFILE
/usr/bin/find $SOMEDIR | while read FNAME; do
[ ! -d "$FNAME" ] && md5sum "$FNAME" >> $OUTFILE
done

==== 2 ====
/usr/bin/find $SOMEDIR | while read FNAME; do
[ ! -d "$FNAME" ] && md5sum "$FNAME"
done > $OUTFILE

Как я понимаю, в первом случае после каждой вычесленной md5sum будет производиться запись в файл (и файловый дескриптор будет закрываться), а во втором будет копиться в памяти весь результат, а потом писаться в файл одним большим куском...

тогда получается что в первом случае постоянно открывается/закрывается файловый дескриптор, но кушается мало памяти на буфер строки, а во вотором случае файл открывается 1 раз, но вся строка-результат копиться в памяти (что может быть плохо если файлов оч много)... тогда первый случай предпочтительнее ибо у нас нет риска израсходовать много памяти...

или же во втором случае сразу открывается файл и по мере получения строки от md5sum она сразу сбрасывается в файл? тогда второй вариант лучше, т.к. не открывается/закрывается постоянно файловый дескриптор...

anonymous

или же во втором случае сразу открывается файл и по мере получения строки от md5sum она сразу сбрасывается в файл? тогда второй вариант лучше, т.к. не открывается/закрывается постоянно файловый дескриптор...

узкое место, в данном конкретном случае -- это вызов md5sum для каждого файла отдельно, хотя, понятно, вопрос не об этом :-)

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.