Как сильно ускорить Lightroom на пустом месте

Этот пост можно было бы озаглавить "как ускорить Lightroom в 7
раз", и я бы не сказал что это была бы ложь, но таки есть
здесь некоторая натяжка ;-) Продолжая изучать для себя тему
ускорения Lightroom (о чём уже развёрнуто писал в
ключе апгрейда аппаратной части и зависимостей) провёл я
дополнительные замеры, экспортируя один и тот же набор файлов в
разных сценариях.
Получил изменение времени экспорта от 8 минут 51 секунды до 1
минуты 19 секунд. Это почти в 7 раз.
Предыстория простая - один мой знакомый пожаловался, что его
нестарый MacBook Pro с двуядерным Core i7 2.8 ГГц (поддерживающим
Hyper Threading), 8 гигабайтами оперативки и крутым матовым
экраном, стоивший ещё не так давно целых 75 тысяч рублей,
экспортирует снимки из Lightroom мучительно долго, и это становится
проблемой, когда ему требуется вывести клиенту тысячу кадров. Мы
замеряли - 127 снимков с Nikon D90 этот MacBook Pro выводил 6 минут
и 30 секунд. Следовательно, на 1000 снимков он бы потратил 51
минуту. Проделав пару операций, на том же компьютере можно сделать
так, что экспорт тысячи снимков займёт 35 минут, то есть, получить
ускорение в 30%. А если ещё кое-что подшаманить, то угробить на
экспорт можно и меньше времени.
Я к тому, что не обязательно покупать новый MacBook (PC, ноут,
проц, апгрейд...) для того, чтобы заставить Lightroom шевелиться
быстрее. Нужно только понимать как и что в нём работает и не
совершать простых ошибок. Таких, например, как экспорт на USB HDD.
Кстати, некоторые владельцы ноутбуков этим грешат, теряя своё
время.
Вкратце: чтобы ускорить вывод снимков в Lightroom,
нужно (1) экспортировать файлы на быстрый накопитель [НЕ
экспортировать на USB HDD и HDD ноутбука] (2) делать это в
несколько потоков. А теперь подробнее и под катом.
UPD. Сразу хотел пояснить, ибо уже вижу комментарии где
меня недопоняли. Говоря о "выводе снимков с Nikon D90" я имею ввиду
"вывод снимков, снятых Nikon D90, из NEF в JPEG/TIFF", то есть о
_рендеринге_ при экспорте, а НЕ об импорте с флешки/камеры в
компьютер. Речь о процедуре, когда RAW с наложением всех масок,
фильтров, коррекций и остального превращается в JPEG и
TIFF.
Я уже писал в статье про
ускорение Lightroom, что и где кушает ресурсы. Но есть два
недооценённых фактора. Во-первых, как показали замеры, экспорт на
медленный диск существенно, а при некоторых условиях в
разы, увеличивает время экспорта, особенно если вы
выводите RAW в TIFF16. Происходит это из-за "секвентальности"
Lightroom - он не приступает к следующей операции, не закончив
предыдущую. Частично ситуацию спасает кэширование операций записи,
но только до определённого предела.
Также, мало кто знает о возможности экспорта из Lightroom в
несколько потоков, а он, в свою очередь, эффективно использует
ресурсы многоядерных процессоров, таких как Core i5 или i7 (и даже
стареньких Core 2 Duo). По умолчанию Lightroom оптимизирован на то,
чтобы вы могли при экспорте заниматься другими делами - например,
ретушировать в Photoshop. Если нужно, можно заставить LR
"кочегарить на полную", и это может быть приличным подспорьем, если
ретуширование "в фоновом режиме" не планируется.
Для проведения замеров я использовал свой "фотодесктоп" - довольно
монструозную машину с процессором Core i7 3960X, 32 гигабайтами
оперативной памяти, 2-гигабайтной видеокартой с поддержкой
ускорения CUDA и OpenGL, массивом из SSD в RAID0 и другими
"няшками", подобранными так, чтобы получить максимум от Lightroom,
Photoshop, Premiere и некоторых других программ, охочих до
ресурсов. Я это говорю не к тому, чтобы похвалиться, а для
понимания цифр. К тому же, даже эту пышущую мипсами железяку можно
ускорить в Lightroom в полтора-два раза на пустом месте.
Вот цифры, полученные при экспорте 127 снимков NEF (RAW) с Nikon
D90 в JPEG максимального качества:
Как видим, прирост составляет почти 2.3 раза, если вместо экспорта одним потоком на медленный внешний диск (скорость записи 35 Мбайт в секунду) мы будем экспортировать тремя потоками на SSD. Но даже простая замена медленного внешнего жёсткого диска на быстрый (USB 3.0) позволяет ничего не меняя выиграть 30 процентов. Но и в стандартном сценарии, когда экспорт идёт в JPEG на SSD, можно выиграть 48 процентов, просто используя многопоточный экспорт.
Усложним задачу. Вот цифры экспорта тех же 127 снимков в NEF
(RAW) с того же Nikon D90 в TIFF16/ProPhotoRGB/без компрессии:
При экспорте на внешний накопитель с интерфейсом USB 2.0 полное
время процедуры заняло чудовищные 8 минут и 51 секунду. Сравните
это с 3:39 при экспорте в JPEG. Но, что забавно, самое короткое
время экспорта (RAMdisk->RAMdisk) даже сократилось и составило
всего 79 секунд (против 91 секунды при экспорте в JPEG при прочих
равных) - то есть, процедура экспорта в TIFF у нас менее
процессорозависимая, но намного более дискозависимая. Это объяснимо
- при экспорте в JPEG нужно ещё сжимать снимки в формат с потерями
данных, на что уходят дополнительные секунды процессорного
времени.
О чём всё это говорит?
а) Используйте как минимум экспорт в два потока. Делается это
просто - выделяете половину файлов, которые хотели перевести в
JPEG/TIFF и делаете им Export. Сразу же выделяете вторую половину и
тоже делаете им экспорт. Вверху появляется две полосочки, загрузка
процессора существенно возрастает, время экспорта сокращается. Если
ядер больше двух (старшие Core i7), можно попробовать экспорт в 3 и
4 потока. На 8-ядерной системе это позволяет поднять загрузку CPU
до 100% и выклянчить ещё процентов пятнадцать по сравнению с
экспортом в два потока.
б) Используя ноутбук экспортируйте не на встроенный жёсткий диск:
либо купите быстрый внешний накопитель (FireWire 800 или
Thunderbolt для Mac, USB 3.0 для PC), либо поменяйте встроенный HDD
на SSD. Уже только это, при прочих равных (процессоре и памяти) на
более-менее актуальной машине ускорит процесс. Не факт, к тому же,
что замена MacBook с 2-ядерным процессором на модель с 4-ядерным
сильно ускорит экспорт, если не использовать многопоточность и
быстрый диск.
А теперь просьба к читателям этого блога. Если будет время и
желание, пожалуйста, сравните сколько у вас идёт экспорт 100
снимков RAW вашей камеры в JPEG 100% и TIFF 16 bit при выводе в 1 и
2 потока. Очень бы хотел увидеть эти цифры в комментариях с
указанием конфига.
P.S. Если сравнивать с тем MacBook Pro, о котором я говорил в
начале, то получается что он 1000 снимков при умелом подходе
экспортирует за 35 минут, а мой десктоп за 10. Вроде бы
разница в одно чаепитие, но я бы ещё вспомнил о скорости рендеринга
превьюшек 1:1 (оно равно столбцу "1 поток, RAMdisk -> RAMdisk")
- получается, что тот комп справится с задачей за 50 минут (а
реально - больше, уперевшись ещё временем доступа в жуткую базу
данных LR), мой за 15. Получается чистой экономии 1 час только на
импорте-экспорте одной небольшой фотосессии. А если прибавить
фильтры Photoshop и остальное, то... разница разительная, конечно.
Это я не потому что макбуки плохие, а потому что десктопы всё ещё
имеют смысл. Себя успокаиваю ;-)