Автор Тема: Как копировать файлы?  (Прочитано 6105 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дерево познания

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://issat.net
Как копировать файлы?
« : 25 Сентября 2003, 22:17:56 »
Как копировать файлы на перле? ну из каталога в каталог ессно :)

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #1 : 26 Сентября 2003, 00:17:35 »
используй - system
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #2 : 26 Сентября 2003, 10:57:46 »
ни в коем случае не используй system для этого!
используй File::Copy
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #3 : 26 Сентября 2003, 10:58:05 »
Yaroslav
Как думаеш под всеми осями `cp` будет так как надо работать?
Дерево познания
perldoc File::Copy
The documentations is your friend

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #4 : 26 Сентября 2003, 12:46:07 »
Цитировать
NeoNox:
Yaroslav
Как думаеш под всеми осями `cp` будет так как надо работать?

не под всеми, но если работает, то даже у меня в книге  (Перл от Шварца) настоятельно рекомендуется :)
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #5 : 26 Сентября 2003, 12:52:17 »
Цитировать
Yaroslav:
не под всеми, но если работает, то даже у меня в книге (Перл от Шварца) настоятельно рекомендуется


1. Порождение процессов затормаживает выполнение скрипта.
2. Никогда не ориентируйся по одной книге. Прочитай несколько, составь свое мнение, думай логически.

ps: Да, и Perl все таки не от Шварца, он от Ларри :D
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #6 : 26 Сентября 2003, 12:55:06 »
Цитировать
Yaroslav:
даже у меня в книге (Перл от Шварца) настоятельно рекомендуется

Не верю в такую очевидную глупость.
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #7 : 26 Сентября 2003, 12:56:12 »
ondr cp будет быстрее File::Copy
будет время проверь.
The documentations is your friend

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #8 : 26 Сентября 2003, 14:36:51 »
NeoNox

Вот, выбрал немного времени и провел небольшой тест.

Копирование 16 файлов, ~24KB

`cp` - 0.0616369247436523
File::Copy - 0.00580298900604248

Копирование 7 файлов, ~84MB

`cp` - 8.02530705928802
File::Copy - 8.39757001399994

Копирование 1 файла, ~284MB

`cp` - 31.0670880079269
File::Copy - 31.488056063652

При тестировании не учитывалось время загрузки модулей.
Машина Duron650/256/винт IDE 5400rpm, Linux RH7.2

Вывод: Дисковая подсистема далека от совершенства :D и не поспевает за обработкой, это видно на копировании больших файлов. В случае же с большим количеством маленьких файлов, межпроцессное взаимодейтвие напрочь портит всю картину.
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #9 : 26 Сентября 2003, 15:15:25 »
У меня совершенно другие результаты
cp везде выигрывает
причем раза в полтора-два
The documentations is your friend

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #10 : 26 Сентября 2003, 15:27:52 »
Факт - штука упрямая. Тут трудно о чем то спорить...

Вот на всякий случай выложу скрипты:
http://t1.web39.net/test1.pl.txt
http://t1.web39.net/test2.pl.txt

Возможно результаты расходятся, т.к. я запускал "cp" для каждого файла, а не в совокупности...
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #11 : 26 Сентября 2003, 15:44:23 »
Посмотри что у тебя получится
#!/usr/bin/perl
use Benchmark;
use File::Copy;

$t = new Benchmark;
`cp ./* ./test/`;
$t1 = new Benchmark;
$td = timediff($t1,$t);
print "the code with \'cp\' took".timestr($td)."\\n";

$t = new Benchmark;
@files = `ls`;
foreach (@files){
chomp;
copy ("./$_", "./test1/$_")
}
$t1 = new Benchmark;
$td1 = timediff($t1,$t);
print "the code with \'File::Copy\' took".timestr($td1)."\\n";
The documentations is your friend

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #12 : 26 Сентября 2003, 16:00:39 »
the code with \'cp\' took 1 wallclock secs ( 0.00 usr  0.00 sys +  0.00 cusr  0.13 csys =  0.13 CPU)
the code with \'File::Copy\' took 0 wallclock secs ( 0.01 usr +  0.00 sys =  0.01 CPU)

однако вот :)
7 MB 33 файла
0 OK, 0:1

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #13 : 26 Сентября 2003, 16:02:02 »
Цитировать
ondr:
ps: Да, и Perl все таки не от Шварца, он от Ларри

"Изучаем Перл" Рэндал Л.Шварц, Том Кристиан (перевод Тимачева)
Цитировать
NeoNox:
Не верю в такую очевидную глупость.

- Применение в функции system списка, а не одной строки, экономит также один процесс shell, поэтому поступайте так при любой возможности.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как копировать файлы?
« Ответ #14 : 26 Сентября 2003, 16:05:22 »
ondr
мдя
запусти раза 3-4
Yaroslav
я уже сказал почему ето неправилно
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28