LINUX.ORG.RU

Perl: эффективная буферизация


0

0

Привет.

Мне нужно на Perl сделать что-то вроде cat, то есть читать бинарные данные и записывать куда-нибудь. Данных может быть очень много, поэтому записать их все в ОЗУ, а потом записать на диск не получится. Делаю следующее:

syswrite OUT, $str while (sysread SRC, $str, 1_000_000);

если OUT сделать псевдонимом STDOUT и шеллом перенаправить этот STDOUT в файл, то это работает раз в шесть-семь (!) быстрее, чем когда я явно открываю OUT через open(). Почему? Я неправильно выбрал размер LENGTH в sysread? Вообще, как наиболее эффективно организовать прямую передачу данных в Perl?

Спасибо.


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