Скорость копирования файлов. [Решено]

Имеется папка с иконками весом 110 МиБ (16 754 файла) которую требуется скопировать в /usr/share/icons. Если копировать ее используя Dolphin - процесс занимает порядка 20-30 секунд, но если в том же самом Долфине вызвать консоль (F4) и прописать sudo cp -R нужнаяпапка /usr/share/icons, то копирование происходит практически мгновенно (2-3 секунды). Буду очень признателен если кто-нибудь объяснит, откуда берется такая огромная разница. Файлы и корневая папка находятся на одном жестком диске.

0
pp7 - 22 Октябрь, 2014 - 22:08
Изображение пользователя pp7.

Скорее всего потому, что опция -R не сохраняет оригинальные права доступа к файлам а значит и время копирования значительно меньше.

0
human - 22 Октябрь, 2014 - 22:30

-R, -r, --recursive
copy directories recursively
ни слова о правах.
поглядел, права как-будто те же самые, только владелец поменялся.

+3
MacLeod - 22 Октябрь, 2014 - 22:33
Изображение пользователя MacLeod.

Потому, что Дельфин работает на Qt и kdelibs, а cp - c системными вызовами ядра =)

0
human - 22 Октябрь, 2014 - 22:43

Спасибо. Теперь понятно =)

0
Apanni - 23 Октябрь, 2014 - 06:24

ИМХО. 20-30 секунд уходит на графическое отображение процесса копирования. А cp не напрягает графику, она только копирует файлы.

+2
MacLeod - 23 Октябрь, 2014 - 22:31
Изображение пользователя MacLeod.

Нет, даже в 3D игрушках, при операциях с миллионами вершин, кадр отрисовывается за 0.0166(6) секунды, что говорить про маленький виджет. Да и отрисовка виджета идет как бы параллельно процессу обработки данных о файлах.
А вся работа с файлами в кедах (если брать kde приложения, такие как Dolhin или Krusader) идет через KIO (входит в kdelibs). При таком стремлении к унификации - объекты тяжелые, содержат кучу информации (других типов kdelibs и Qt) и проверок (например, достаточно ли места на получателе для копирования файла). Но опять же, KIO не работает напрямую с ядром, он использует Qt, который сам по себе тоже является довольно тяжелым тулкитом (были недавно дискуссии о медленном запуске Dolphin по причине медленной инициализации объектов на Qt, которые лежат в основе первого) и только уже функции Qt используют системные вызовы ядра (те самые, которые cp использует напрямую). Разработчики KDE при этом не нарушают уровни абстракции (не пытаются давать команды напрямую файловой системе через ядро, что делает их код зависимым от Qt, но независимым от платформы), что также позволяет держать код в порядке, простоте и читабельности. Но на производительности сказывается. С одной стороны, KIO умеет много всего, с другой - на простой операции проигрывает в скорости.
Да и сам алгоритм копирования - линейный, обработка не распараллеливается. Еще возможно, что плохо оптимизирован, а возможно - это просто результат дополнительных накладных расходов.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры