Процессор для фото/видео редактирования и почему тесты показывают фигню

testy-pocessorov.jpg

В век цифровой картинки каждый фотограф, видеограф, дизайнер, 3д моделлер итд регулярно встречается с вопросом «какой процессор ему выбрать». Чтобы «не тормозило» и вообще работало быстро итд. Если выбор хочется сделать осознанный — очевидный путь лежит на железячные сайты, в сводные тестирования процессоров или в обзор какого-то свежего процессора. Там находится табличка анлогично левого скриншота с сайта IXBT на основании чего делается вывод, что брать надо актуальный i7 процессор (или, в несколько более редких случаях — AMD Ryzen) а если бюджет очень жмет — то i5.
В принципе, вывод правильный, но ситуация несколько сложнее, чем кажется на первый взгляд. Дело в том, что если капнуть поглубже, окажется, что график слева показывает сферических попугаев в вакууме, и с действительной производительностью в реальном фотошопе, лайтруме или премьере связан плохо — на самом деле, куда ближе к реальности _для растровых_ редакторов картинка с того же ixbt, но про illustrator.

Проблема многоуровневая и сначала надо сказать о  том, что работа в графических и видеоредакторах делиться на две неравномерные составляющие. Собственно, сама «интерактивная работа» и окончательный рендринг/экспорт. Причем интерактивная работа как правило занимает основное время из всего потраченного на «проект» (на конкретную фотосессию или создание видеоролика). Т.е. наиболее типичная ситуация, это когда процесс монтажа занимает, например 5 часов, а финальный рендер видеофайла занимает минут 10. Бывает по разному, но чаще всего, как то так. Более того, наиболее типичный случай — когда время финального рендера не слишком важно или совсем не важно. Т.е. будет это 20 минут или 30 — не только не важно в плане незначительности разницы на фоне 5 часов подготовки но и не важно само по себе — в это время все равно пьется чай, делаются другие дела итп. Бывают и обратные ситуации — когда творческой работы материал почти не требует, зато объемы рендера большие, например «каталожка», но все же такое скорее исключение на общем фоне.
Чаще всего, время рендера не слишком критично и рвать попу ради даже 50% прироста часто не слишком уж мотивирует на апгрейд. А вот скорость работы во время самой «интерактивной работы» как раз наоборот, очень важна пользователю. Т.к. это те самые «тормоза» от которых все мечтаются избавиться.
Печальная ирония ситуации в том, что вот эту, не так уж интересную производительность на рендере измерить легче всего. Накидал исходных файлов, нажал рендер, записал время рендринга — готово.  Рендер, к тому же, отлично параллелится. А вот тормоза во время интерактивной работы измерить сложно, а то и не реально на практике.

Поэтому в графиках тестовых результатов всех мировых изданий в том, что касается фото и видео редакторов измерена хрень которую все же можно мерить — тот самый рендер. Когда вы видите график скорости работы в Adobe Premier вы скорее всего про себя думаете про какую-то «общую» абстрактную «скорость работы вообще», но вы видите не скорость работы, вы видите конкретно время просчета финального результата. И да, тут очень большая разница, это совсем не одно и то же. Ибо многопоточность.

Заговор многоядерности

Первые массовые двухядерные процессоры стали проникать в системники больше 15 лет назад, лет 10, как, по сути, перестали продаваться одноядерные процессоры, и любой компьютер сейчас минимум двухядерный. Производительные машины как правило четырехядерные и это тоже длиться уже много лет.  Все мы давно знаем, что многопоточность ускоряет выполнение программ. И только более опытные пользователи иногда в курсе, насколько, на самом деле, мало до сих пор используется эта двухядерность.  Те же самые тесты как правило показывают явное преимущество многоядерных процессоров, даже в смартфонах ставят по 8 ядер и эти телефоны рвут в бенчмарках менее дорогие аппараты.  Возникает полное ощущение, что чем больше ядер тем лучше, но это ощущение несколько ложное.

Дело в том, что

  • Одноядерных процессоров не выпускается вообще, а двухядерные — изначально дешевые решения работающие на куда меньших частотах, чем могли бы (недавно вышедший первый скоростной двухядерник i3-7350K тут же показал, что в большинстве типичных задач он легко догоняет старшие линейки)
  • Тестирование процессоров включает большие наборы разношерстных тестов, многие из которых довольно экзотические, но при этом хорошо «масштабируемые» по ядрам
  • Современые тестирования процессоров часто не включают наиболее типичные «офисные» и домашние задачи типа работы в Word, Exel, браузинга итд по причине того, что абсолютно все процессоры хорошо справляются с этими задачами и тестировать там вроде как и нечего. А эти задачи могут составлять и половину и 80-99% всего времени.
  • Выше описанная ситуация, когда, например, в графических пакетах тестируют не совсем то, что на самом деле интересует да, в добавок, получают опять же преувеличенные результаты.

На самом деле, хорошо параллелящихся задач (тех, на которых получается кратный прирост от кратного прироста ядер) — совсем не много. Как правило это те самые рендеры, всяческие конвертации видео и других медиа, упаковка распаковка архивов и некоторые игры.

Абсолютное большинство реально выполняемых задач по прежнему однопоточные. И это даже не лень програмистов, а обычно объективная невозможность создание такого кода для конкретной задачи в принципе. Тут все довольно просто: когда у нас идет та же видеоконвертация, каждому процессору можно дать как бы по кусочку видео — исходные данные у нас есть сразу для всего ролика. По сути, для процессора задача становится «рендрить сразу 4 ролика по одному на каждом ядре». Потом результат склеивается вместе и мы получаем почти четырехкратный прирост от выполнения задачи на четырехядерном процессоре. Как раз из-за возможности разбить работу на независимые друг от друга блоки все эти «рендеринги» отлично паралеллятся и очень выигрывают от лишних ядер.
Но совсем другое дело, когда для дальнейших вычислений всегда нужен результат предыдущих вычислений. Такую задачу никак не ускорить дополнительными ядрами.  Простой пример — копать траншею лучше большим числом рабочих, и это даст кратный прирост скорости, каждый рабочий копает свой участок одновременно. А вот решать дифференциальное уравнение большим числом математиков бесполезно, никакого прироста скорости это не даст т.к. разделить задачу нельзя — на каждом этапе вычислений нужны результаты предидущих этапов. Аналогично написание, например, сочинения — осмысленный результат врядли получится, если писать его с разных кусков начнут сразу несколько человек. Все такие строго однопоточные задачи никакого эффекта от многоядерности, разумеется, не получают — в них работает только одно ядро. Максимум, что дает многоядерность процессора в такой задаче — еще одно из ядер полностью берет на себя системный процессы операционной системы, фоновые процессы и т.д., «не отвлекая» основное от работы.   Вся известная мне «интерактивная работа» — т.е. непосредственный рабочий процесс мышкой и клавиатурой по экрану — однопоточный и никакого эффекта от остальных стапитисот ядер в процессоре не имеющий.  Все фотошопы, премьеры, иллюстраторы, лайтрумы даже 3д максы — в работе грузят только одно ядро.

Вот когда подготовишь ролик и нажмешь кнопку «рендер» — вот тогда ядра заработают во всю прыть, но львиную долю времени они простаивают.

Неправильные тесты

Многоядерность здорово искажает результаты тестов из-за методики тестирования. Т.е. например видеоредактор тестируют замером времени на рендеринг ролика, результат получается отлично масштабируемым по числу ядер.  8и ядерный процессор рендрит лучше 4х ядерного при прочих равных и показывает куда более длинную полосочку графика. В интерактивной работе процессоры могут работать совершенно одинаково но на рендринге демонстрировать сильное преимущество многоядерной (как правило — одновременно и более дорогой) модели. Иронично, что из-за особенностей конструкции многоядерные процы работают на более низких частотах чем «родные» им по поколению 4х ядерные (больше ядер под одной крышкой сложнее охлаждать, приходится снижать частоты) из-за чего в реальности, сплошь и рядом вдвое более дешевый 4х ядерный i7 работает даже быстрее своего дорогого 8и ядерного собрата. Разница обычно чисто формальная но тем не менее — результат теста явно сильно искажен и откровенно врет неподготовленному читателю — тому, кто не в курсе, что же именно в тесте померили и что это реально означает а чего — совсем не показывает. Как правило пользователь думает, что на графики та самая «интерактивная» работа в первую очередь.

photoshop-test.jpg
На том же ixbt замер производительности Lightroom’а — это замер времени финального экспорта пачки фотоснимков. Lightroom одна из очень плохо оптимизированных программ, подтормаживающая в работе даже на самых топовых машинах — никакой существующий процессор не способен заставить ее работать плавно.  Но если посмотреть на результаты тестов на картинке выше, увидим что скорость работы можно увеличить раза в три относительно старых и младших моделей просто купив хороший процессор. К сожалению, в _реальной_ работе график будет куда больше похож на тот, что на верхней картинке справа (векторная графика). Т.е. разница есть, но, видно, что начиная с недорого Pentium g4400 дальнейшая доплата за все более дорогие модели почти не приносит заметного быстродействия — можно заплатить и четырехкратную стоимость а получить что то вроде 10-15% прироста (на глаз такой рост можно вообще не заметить).

Скорость работы в Photoshop и Illustrator измеряют опять же криво, довольно далеко от реальных сценариев использования. Пишется какой-нибудь надуманный action для Photoshop, который меняет размеры картинки, применяет автоконтрасты и автоколоры, всякие  фильтры накидывает. Этот скрипт натравливают на папку тестовых фотографий и записывают время прогона  Фишка в том, что масштабирование (возможно) и часть фильтров (точно) — то немногое ,что в фотошопе переписано под многоядерность и получает ускорение от многоядерности. В реальной работе 99.99% времени занимают однопточные опреации, но в тесте изрядную долю времени могут занимать те самые наложения филтров которые уже многопоточные. Что мы получим в результате? Как обычно — сильно искажение результатов теста. Многоядерный процессор сильно отрывается от младших моделей хотя ИРЛ разница намного меньше.

Использование специализированого софта для тестирования — pcmark, насколько можно судить по описанию тестов не помогает — методика работы там примерно такая же.

А вот Illustrator это чисто однопоточное приложение, на развитие которого Adobe полностью забили (конкурентов нет, чего напрягаться) и там даже плагины не оптимизированы под многоядерность.  Поэтому график скорости в иллюстраторе довольно непохо показывает реальную визуальную разницу между процессорами в реальной работе. Реальные графики интерактивной работы для фотошопа и лайтрума скорее всего очень похожи на этот, но тесты вводят пользователей в заблуждение (что покупка дорогого i7 что-то даст им в лайтруме).

Вообщем, печальная ситуация такая: в реальной работе даже хороший двухядерник не задушенный марктингом (тот же  i3-7350K) вполне себе догоняет куда более дорогой процессор, а реальная разница между процессорами по скорости — куда ниже той, что мы привыкли видеть в тестах.  Печально тут не то, что младший догоняет старших а то,что на самом деле старшие никак не могут оторваться от младшего хотябы на полкорпуса.

Правильные, нужные тесты

Может сложиться мнение, что я все тесты процессоров считаю лживым навешиванием лапши на уши наивных читателей и тд. Но нет. Тесты процессоров — полезная, нужная штука. Просто надо понимать описанную специфику, понимать что именно  измерили в тесте и на сколько оно далеко или близко от реальных рабочих сценариев. Описанные проблемы далеких от реальности скриптов и замеров не того, что нужно и что ожидаешь видеть касаются только перечисленных графических пакетов. Тесты в играх или том же видеокодировании куда прозрачнее и вполне очевидно показывают насколько один процессор справится с конкретной задачей быстрее и лучше. Тесты по рендеру в 3д пакетах обычно не вызывают вопросов у 3д-артистов, именно время рендринга им и интересно. Тесты архиваторов тоже однозначны и тд.

Так какие процессоры «правильные»? Что покупать?

Для типичной работы в фотошопе и лайтруме, — свежий i3 или i5.  Максимум-оптимум — К серия, материнка с поддержкой разгона, и, собственно, разгон. Только врядли вы заметите разницу после разгона в работе на глаз. Как показывает практика, чтобы заметить эффект от процессора, надо что бы новый был быстрее старого раза в полтора-два. Разгоном столько не получить — удачный разгон сейчас добавит в пределах 10% прироста.  Скальпингом и удачей можно получить больше но незнаительно и опять же, врядли будет действительно заметно на глаз.

На самом деле, при скромном бюджете даже быстрые Pentium’ы, например G4400 — хороший выбор. Скорее всего, разницы в работе не будет или почти не будет даже если поставить топовый i7 рядом.

Стоит ли платить за i7 обычной настольной серии (т.е. за те, что стоят 300-400$)? Стоит, если деньги на рабочей машине вы не экономите совсем. Базовые частоты у i7 выше, многопоточные операции типа экспорта будут ускорятся. Доплата выше реального прироста но зато есть моральное удовлетворение что стоит «самый быстрый» процессор и тут точно не узкое место. Если вы экономите или собираете оптимум по цена-качества — нет, i7 явно хуже по этому параметру чем i5. Разница между этими двумя линейками — в дополнительных виртуальных потоках на i7, плюс чисто марктингово i7 делают более высокие частоты но для K серий где частоту можно «поправить» разницы в большинстве сценариев нет.

Стоит ли платить за дорогие i7 (i9) типа i7-6800 или 6900? Нет, это многоядерные процессоры с очень большой доплатой за эти лишние ядра. Частоты у них даже ниже «обычных» i7 и в работе они, соответственно, формально даже хуже.

Для нетипичной работы в photoshop и lightroom — когда время экспорта занимает очень большую часть времени отведенной на проект. Например каталожка — с одним и тем же светом отснято много кадров, на них в LR массово применяется один пресет и сразу же все это отправляется на экспорт. Т.е. «осмысленная работа» занимает процентов 10-20% времени, в основном программа экспортирует. Вот тут как раз будет существенный прирост от многоядерных процессоров — можно покупать и i7 и даже «дорогой i7», а также стоит присмотрется к AMD Rysen.

Для видеомонтажа. Тут в целом все тоже самое. Если вы обычно 90+% времени монтируете (однопточный процесс) а экспорт на этом фоне занимает незначительное время — логично, что нет особого смысла платить даже за двух-трех кратное ускорение, на этом самом экспорте (по факту, ускоряя десятипроцентный этап работы в два раза вы ускоряете всю работу всего примерно на 5%). И, логично, стоит заплатить если у вас наоборот, экспорт и разные перекодировки видео занимают значительное рабочее время.  Кстати, конвертации видео сейчас обычно лучше поручать GPU — конвертация на видеокарте может быть на порядок быстрее процессорной.

В зависимости от нагрузки и специфики, может даже иметь смысл покупка тех самых дорогих 8и ядерных процессоров типа i7-6900k.