Этoй стaтьeй мы нaчинaeм цикл, пoсвящeнный рaзрaбoткe нoвoй вeрсии нaшeгo тeстoвoгo пaкeтa iXBT Application Benchmark нa oснoвe рeaльныx прилoжeний для тeстирoвaния прoцeссoрoв, нoутбукoв и ПК. И нaчнeм мы с тeстoв нa oснoвe прилoжeний пo oбрaбoткe фoтoгрaфий. Нaпoмним, чтo трaдициoннo в нaш тeстoвый пaкeт вxoдят тaкиe прилoжeния пo oбрaбoткe фoтoгрaфий, кaк Photoshop, Lightroom и Capture One Pro. Сoбствeннo, пeрвoнaчaльнo мы xoтeли нaписaть стaтью o нoвыx тeстax нa oснoвe всex трex прилoжeний, oднaкo в прoцeссe рaбoты выяснилoсь, чтo Adobe Photoshop CC 2018 трeбуeт oтдeльнoй стaтьи — xoтя бы потому, что мы планируем использовать это приложение не только для обработки фотографий, но и для 3D-рендеринга.
Зачем обновлять?
Мы давно используем Adobe Photoshop в бенчмарке для тестирования производительности процессоров, ноутбуков и ПК. Но само приложение периодически обновляется, так что мы стараемся обновлять и наш тестовый бенчмарк, дабы сделать его более актуальным. Причем обновления тестового бенчмарка касаются не только использования новых версий приложений: в некоторых случаях мы также меняем контент и сценарий самого теста. Зачем это делается? Есть несколько причин.
Во-первых, у новой версии приложения могут появиться новые функциональные особенности, которые можно использовать для тестирования. Впрочем, это, скорее, исключение из правил, такое бывает крайне редко (хотя в случае новой версии Photoshop будет как раз такое исключение).
Но есть и другая причина для изменения контента и сценария теста. Жизнь не стоит на месте. Появляются новые кодеки, становятся популярными новые форматы и разрешения. К примеру, за последнее время стало популярным разрешение 4K, в котором сегодня умеют снимать видео даже смартфоны, стал популярным кодек H.265, фотографии уже никто не сохраняет в формате TIFF, и т. д. Одним словом, нужно учитывать тенденции развития рынка и подстраиваться под них.
Еще одна причина заключается в том, что в течение года активного использования тестового бенчмарка могут выявиться определенные недостатки или особенности, с которыми хочется что-то сделать. Приведем конкретный пример. У нашего теста на основе приложения Photoshop была выявлена одна интересная особенность: тест очень медленно выполнялся на процессорах без поддержки технологии Hyper-Threading — вплоть до того, что результаты двухъядерного процессора с технологией Hyper-Threading оказывались лучше, чем в случае четырехъядерного процессора без Hyper-Threading (при одинаковых тактовых частотах, разумеется). Конечно же, хотелось разобраться, что именно приводит к таким результатам, то есть какой именно фильтр (в тесте используется пакетная обработка RAW-файлов с наложением фильтров Shake Reduction, Noise Reduction, Lens Correction) так «любит» Hyper-Threading. Или это вообще особенность приложения Photoshop, которая проявляет себя в любых операциях?
Но прежде чем обсуждать новые тесты на основе приложения Photoshop, сделаем еще одно замечание.
О «сферических конях» и реальных сценариях
Каким должен быть идеальный тест? Сам по себе вопрос некорректен, поскольку идеального теста быть не может. Любой сценарий, положенный в основу теста, для кого-то будет неактуален просто потому, что именно такой сценарий именно этот человек не использует. К примеру, далеко не все пользователи снимают фотографии в RAW-формате, так что тест по конвертированию RAW-фотографий в JPEG для них вряд ли актуален. Конечно же, для таких приложений, как Photoshop, можно придумать десятки различных сценариев тестирования, но ведь использовать все возможные сценарии для реального тестирования невозможно. Поэтому речь идет о том, чтобы выбрать лишь несколько сценариев (в идеале — всего один), которые будут использоваться для тестирования.
Отобранный для теста сценарий должен удовлетворять двум критериям. Во-первых, он должен быть типичным, а во-вторых, он должен хорошо нагружать тестируемую систему. Если тест не загружает должным образом компоненты ПК (например, процессор), то может получиться абсурдная ситуация, когда мощный ПК на базе 16-ядерного процессора и какой-нибудь бюджетный вариант на базе Core i3 продемонстрируют в тесте примерно одинаковые результаты, на основе которых нельзя сделать корректных выводов о производительности этих решений. Конечно, полученная информация будет полезной («В таком-то режиме обработки данных такой-то программы производительность совершенно не зависит от установленного процессора начиная как минимум с Core 2 Duo E6600, поэтому нет смысла делать апгрейд своего компьютера ради этой операции»), просто тест нельзя будет использовать в качестве измерителя производительности разных процессоров.
С другой стороны, во многих случаях можно придумать сценарий, который будет хорошо нагружать систему, в том числе загружая на 100% все ядра процессора, однако сам сценарий при этом будет крайне искусственным, нетипичным. В таком случае мы получим то, что называют сферическим конем в вакууме, то есть тест, не имеющий отношения к реальности.
Поэтому, на наш взгляд, хороший тест представляет собой золотую середину между «сферическим конем» и сценарием, который хоть и типичен, но слабо загружает систему и, соответственно, не позволяет получить результатов, на основе которых можно делать корректные выводы о производительности.
Тем не менее, в некоторых случаях без «сферических коней» не обойтись. Если речь идет о многогранном программном пакете, ориентированном на решение разнообразных задач, то какой бы сценарий ни использовался, он не будет типичным. И любой тест на основе такого программного пакета с хорошей загрузкой процессора будет представлять собой «сферического коня». В качестве примера можно привести программные пакеты Matlab и SolidWorks. В 99% случаев в пакете Matlab решаются задачи, которые не особо загружают процессор и способны выполняться на слабеньких по производительности процессорах. Более того, спектр решаемых в Matlab задач настолько широк, что понятие типичной задачи тут вообще неуместно. В итоге в среде Matlab можно реализовать сценарий с хорошей загрузкой процессора, который позволит вполне адекватно оценивать производительность процессоров, но это нельзя будет назвать производительностью в Matlab. Таким образом, не всегда можно обойтись без «сферических коней», да не так уж они и плохи.
Ну, а теперь, после общих замечаний, перейдем к конкретике.
Тесты на основе приложения Adobe Photoshop CC 2018
Придумать тест для оценки производительности компьютера на основе приложения Photoshop не так-то просто. Напомним, что Photoshop является своего рода отраслевым стандартом в сегменте обработки цифровых фотографий. Однако это приложение используется не только в качестве редактора растровых изображений, но и для создания и редактирования векторных изображений и даже для создания 3D-изображений.
Ранее мы использовали Photoshop исключительно для работы с цифровыми фотографиями, но уж раз в приложении есть инструменты для создания 3D-моделей, то мы решили, что нужно использовать и эту возможность в наших тестах. Впрочем, о тесте по созданию 3D-изображения в Photoshop мы расскажем чуть позже, а пока остановимся на тесте по обработке фотографий.
При разработке теста по обработке фотографий в Photoshop нужно сразу определиться со следующими моментами:
- Каким должен быть формат фотографий?
- Пакетный режим обработки или обработка одной фотографии?
- В чем заключается обработка?
В качестве исходного формата фотографий мы выбрали RAW. Для такого профессионального приложения, как Photoshop, обработка фотографий в RAW-формате представляется естественной операцией. Обработанные фотографии сохраняются в формате JPEG, что можно считать типичным сценарием.
Для теста производительности естественно использовать пакетный режим обработки фотографий. Обработка одной фотографии — это творческий процесс, скорость которого очень мало зависит от производительности компьютера, а определяется в основном тем, как быстро пользователь управляется с мышкой, и временем раздумий над полученным промежуточным результатом. В пакетном же режиме используются те операции, которые можно применять сразу ко всем фотографиям и выполнение которых суммарно занимает много времени, не требуя участия пользователя в самом процессе. Правда, тут возникает часто высказываемое возражение, что если внимание пользователя для какого-то сценария не требуется, то и время его выполнения неважно, поскольку этот сценарий можно выполнять в фоне или отойдя от компьютера покурить/выпить кофе/отслужить в армии. Возражение справедливое, однако сценарии все-таки у всех разные, да и выше мы уже обсудили проблему «сферических коней».
Итак, в чем же заключается процесс обработки фотографий?
Приложение Photoshop содержит большое количество различных фильтров, которые можно применять при обработке фотографий. Однако проблема заключается в том, далеко не все фильтры способны создать реально ощутимую загрузку даже не очень производительного процессора. Проанализировав все фильтры и процедуры, входящие в стандартный комплект приложения Photoshop, мы выделили всего три фильтра, которые, как нам кажется, можно использовать для целей тестирования: Lens Correction, Reduce Noise и Shake Reduction. Кроме того, процедура открытия файла с фотографией и последующее сохранение (возможно, с изменением размера) с конвертацией в другой формат тоже являются операциями, которые хорошо загружают процессор. Причем последняя операция самая типичная, то есть без нее не обходится ни одна обработка фотографий.
Попутно отметим, что, выбирая те действия, которые могут использоваться для тестирования, мы рассматривали не только фильтры. К примеру, мы экспериментировали с такими процедурами, как создание панорамы и создание HDR-изображения. Однако, как выяснилось, создание HDR — операция однопоточная, да и создание панорамы практически не загружает процессор.
Итак, определившись с конкретными действиями, которые могут использоваться при обработке фотографий в пакетном режиме, нам остается лишь скомбинировать эти действия и создать соответствующий Droplet. Однако прежде мы рассмотрим каждое из этих действия в отдельности, дабы выяснить, как результат в каждом отдельном тесте зависит от числа ядер процессора и технологии Hyper-Threading. В качестве исходного контента мы используем 100 фотографий в формате RAW, сделанных камерой Canon EOS 5D Mark III с объективом Canon EF 50mm f/1.2L USM. Разрешение каждой фотографии составляет 3840×5760.
В пакетном режиме обработки невозможно избавится от процедуры открытия файла, чтобы проанализировать только лишь действие самого накладываемого фильтра. Но зато можно избавиться от процедуры сохранения обработанной фотографии — исключительно в академических целях, дабы наблюдать изолированное действие фильтра. Поэтому мы рассмотрим четыре отдельных теста:
- открытие RAW-файла и наложение фильтра Lens Correction без сохранения результата;
- открытие RAW-файла и наложение фильтра Reduce Noise без сохранения результата;
- открытие RAW-файла и наложение фильтра Shake Reduction без сохранения результата;
- открытие RAW-файла, уменьшение размера изображения до 800 пикселей по высоте и последующее сохранение в формат JPEG.
Для тестирования мы использовали стенд следующей конфигурации:
Процессор
Intel Core i7–8700K
Видеокарта
процессорное графическое ядро (Intel UHD Graphics 630)
Память
16 ГБ DDR4–2400 (двухканальный режим работы)
Материнская плата
Asus Maximus X Hero (Intel Z370)
Накопитель
SSD Seagate ST480FN0021 (480 ГБ, SATA)
Операционная система
Windows 10 (64-битная)
Учитывая, что фильтр Shake Reduction выполняется довольно долго, в тесте с использованием этого фильтра мы уменьшили количество обрабатываемых в пакетном режиме фотографий до 10.
Adobe Photoshop CC 2015.5 vs Adobe Photoshop CC 2018
Мы не будем сравнивать между собой сами версии Adobe Photoshop (это тема для совсем другой статьи), но тестирование мы провели в пакетах Adobe Photoshop CC 2015.5 и Adobe Photoshop CC 2018, получив довольно интересный результат. (Напомним, что приложение Adobe Photoshop CC 2015.5 использовалось в предыдущей версии нашего тестового бенчмарка.)
В тесте с наложением фильтра Shake Reduction время обработки фотографий в приложении Adobe Photoshop CC 2018 стало больше. Естественно, настройка самого фильтра в обоих случаях была одинаковая.
В новой версии Photoshop в этом тесте увеличилась и загрузка ядер процессора.
Так, в приложении Adobe Photoshop CC 2015.5 загрузка ядер процессора при выполнении фильтра Shake Reduction была следующей:
В версии Adobe Photoshop CC 2018 при выполнении того же фильтра загрузка процессора такая:
Логично было предположить, что в новой версии был изменен (улучшен) сам алгоритм, используемый в фильтре. То есть операция стала занимать больше времени, но зато выдавать лучшее качество. Дабы проверить это предположение, мы обработали одну и ту же фотографию фильтром Shake Reduction в приложении Adobe Photoshop CC 2015.5 и в приложении Adobe Photoshop CC 2018, загрузили в Photoshop обе обработанных фотографии, наложили их друг на друга (в разных слоях) и провели операцию вычитания слоев (Difference). Если разницы в фотографиях нет, то мы должны получить абсолютно черное поле; иной результат свидетельствует о наличии разницы. И как выяснилось, никакой разницы в результатах нет. Тут, конечно, самое время порассуждать о масонском заговоре, но это тема для другой статьи. Однако факт остается фактом: использование фильтра Shake Reduction в Adobe Photoshop CC 2018 приводит к точно такому же результату, как в Adobe Photoshop CC 2015.5, просто для этого требуется больше времени, а в процессе выполнения операции процессорные ядра загружаются сильнее.
С остальными фильтрами (Reduce Noise, Lens Correction) и конвертированием RAW-файлов в JPEG такого эффекта не наблюдается: здесь Adobe Photoshop CC 2015.5 и Adobe Photoshop CC 2018 выдают абсолютно одинаковые результаты. Вследствие этого дальше мы приводим результаты тестирования только для Adobe Photoshop CC 2018.
Кроме того, для приложения Photoshop CC 2018 мы добавили еще один тест: увеличение размера фотографии (масштабирование до 500%) с использованием нового алгоритма Resampling, называемого Preserve Details 2.0 (в предыдущей версии Photoshop этот алгоритм отсутствовал). При выборе Preserve Details 2.0 можно дополнительно задать уровень шумоподавления (Reduce Noise). Мы использовали в тесте шумоподавление 50%.
Сам тест с увеличением размера изображения называется Large_Scaling на диаграммах с результатами. Для данного теста в пакетном режиме, как и для теста Shake Reduction, используется 10 (а не 100) фотографий в формате RAW.
Зависимость результатов от числа ядер при использовании технологии Hyper-Threading
Для того чтобы проанализировать зависимость результатов от числа ядер процессора, мы использовали один и тот же шестиядерный процессор Core i7–8700K, но в UEFI BIOS Setup задавали количество доступных ядер. Технология Hyper-Threading, поддерживаемая процессором Core i7–8700K, не отключалась.
По результатам тестирования можно заключить, что различные фильтры по-разному реагируют на число ядер процессора. Так, результаты теста c фильтром Shake Reduction почти не зависят от числа ядер процессора: результат для одного ядра почти такой же, как для шести. Конвертирование RAW-файлов в формат JPEG с уменьшением размера изображения занимает почти одно и то же время для шести, пяти, четырех и трех ядер процессора. И только при уменьшении до двух и одного ядра время выполнения теста начинает заметно возрастать. Аналогичный результат получается и для теста с фильтром Lens Correction. А вот тест с фильтром Reduce Noise начинает заметно зависеть от количества ядер процессора, уже когда ядер становится менее четырех. Ну, а тест Large_Scaling более всего «чувствителен» к числу ядер процессора.
Зависимость результатов от числа ядер процессора без технологии Hyper-Threading
Для того чтобы проанализировать зависимость результатов от технологии Hyper-Threading, мы отключали данную технологию в настройках UEFI BIOS Setup. Интерес представляет сравнение результатов тестирования при отключенной технологии Hyper-Threading и шести активных ядрах процессора (шесть потоков) с результатами тестирования при включенной технологии Hyper-Threading и трех активных ядрах процессора (опять-таки, шесть потоков).
Как и следовало ожидать, шесть «честных» ядер без Hyper-Threading лучше, чем шесть логических ядер (три физических ядра с технологией Hyper-Threading).
Правда, есть одно исключение: фильтр Shake Reduction, который ведет себя очень странно при отключении технологии Hyper-Threading. Именно поэтому мы вынесли результаты этого теста на отдельную диаграмму.
Действительно, если в случае трех ядер с технологией Hyper-Threading на обработку 10 фотографий фильтром Shake Reduction уходит 150 секунд, то в варианте c шестью ядрами без технологии Hyper-Threading на ту же задачу требуется более 7 часов (26170 с), то есть в 175 раз больше времени. Результат настолько удивительный и аномальный, что он просто не укладывается в голове. Первая мысль, заслуживающая проверки: возможно, на процессорах без поддержки Hyper-Threading все будет иначе? Мы попробовали запустить данный тест на другой системе с процессором Core i5–6600K (четырехъядерный процессор без технологии Hyper-Threading), но результат был неутешителен: время обработки одной фотографии оказывалось аномально большим.
Мы решили еще немного поэкспериментировать с технологией Hyper-Threading, отключив ее и меняя количество ядер процессора от одного до шести. Учитывая, что тест Shake Reduction на процессоре без технологии Hyper-Threading может длиться аномально долго, мы ограничились обработкой одной фотографии.
Полученные результаты тестирования кажутся полным бредом и не укладываются в голове, однако этот бред был многократно проверен и представляет собой факт: для фильтра Shake Reduction увеличение числа ядер процессора без технологии Hyper-Threading приводит к нелинейному росту времени обработки фотографии. Вплоть до четырех ядер процессора время выполнения теста увеличивается квадратично числу ядер, а для четырех, пяти и шести ядер процессора время выполнения теста практически одинаково.
Мы также проверили этот более чем странный эффект на совсем другой системе с четырехъядерным процессором Core i5–3470 (без поддержки технологии Hyper-Threading) и с другой версией приложения (Adobe Photoshop CC 2014). И опять-таки, при использовании одного ядра процессора обработка фотографии фильтром Shake Reduction происходит значительно быстрее, чем при использовании всех четырех ядер. Если говорить конкретнее, то быстрее примерно в три раза (68 с вместо 221 с).
То есть в этом тесте — как у плохого танцора: чем больше ядер без Hyper-Threading, тем хуже. Если же ядра с Hyper-Threading, то, напомним, большой разницы между одним ядром и шестью ядрами не будет. В итоге тем пользователям, процессор которых не имеет поддержки технологии Hyper-Threading, мы бы посоветовали при обработке фотографий фильтром Shake Reduction в пакетном режиме оставлять доступным только одно ядро процессора.
Итоговый тест по обработке фотографий на базе приложения Adobe Photoshop CC 2018
Итак, мы проанализировали производительность фильтров Lens Correction, Reduce Noise и Shake Reduction, а также операций конвертирования RAW-файлов в формат JPEG с уменьшением размеров изображения и конвертирования RAW-файлов в формат JPEG с масштабированием фотографий до 500% по алгоритму Preserve Details 2.0 с шумоподавлением 50%.
Фильтр Shake Reduction мы решили не использовать по причине его аномального поведения. А без него остается не так уж много возможных вариантов. Для пакетного режима обработки фотографий фильтры Lens Correction и Reduce Noise являются вполне естественными, так что их мы решили использовать в итоговом тесте. Соответственно, тест на основе приложения Adobe Photoshop CC 2018 представляет собой пакетную обработку 100 фотографий, сделанных камерой Canon EOS 5D Mark III с объективом Canon EF 50mm f/1.2L USM. Разрешение каждой фотографии составляет 3840×5760. При обработке фотографий последовательность действий следующая:
- открытие RAW-файла,
- наложение фильтра Lens Correction,
- наложение фильтра Reduce Noise,
- уменьшение размера фотографии до 800 пикселей по высоте,
- сохранение в формат JPEG с максимальным качеством.
Буквально один комментарий относительно уменьшения размера фотографии. Сам по себе процесс уменьшения размера никак не отражается на загрузке процессора (при использовании алгоритма Bicubic Resize это очень простая операция). Однако в пакетном режиме обработки большого числа фотографий уменьшение их размера перед сохранением позволяет уменьшить время, которое требуется для записи готовых фотографий на накопитель, и тем самым уменьшить влияние производительности накопителя на результаты тестирования.
Результаты теста в приложении Adobe Photoshop CC 2018 при пакетной обработке 100 RAW-фотографий в зависимости от числа ядер процессора с поддержкой технологии Hyper-Threading таковы:
Как видно по результатам тестирования, даже в случае 6-ядерного процессора время выполнения теста получается довольно большим. Поэтому в окончательном варианте нашего теста по обработке фотографий на основе приложения Adobe Photoshop CC 2018 мы, скорее всего, уменьшим количество обрабатываемых фотографий до 50 штук.
Что касается рассмотренной операции увеличения размера фотографии в пять раз (масштабирование до 500%) по алгоритму Preserve Details 2.0 с шумоподавлением 50%, то этот тест можно, конечно, использовать в пакетном режиме, но нельзя сказать, что такая процедура является естественной и часто используемой в пакетном режиме обработки. Поэтому, дабы не плодить «сферических коней», мы решили пока отказаться от использования данной операции в нашем тесте, тем более что при записи больших по размеру обработанных фотографий на накопитель в пакетном режиме результаты начинают существенно зависеть от производительности накопителя. Само по себе это даже полезно, но хотелось бы «отделить мух от котлет».
Тест рендеринга 3D-модели в приложении Adobe Photoshop CC 2018
Как уже отмечалось в начале статьи, приложение Adobe Photoshop CC 2018 очень многогранно, и использовать его лишь в качестве редактора фотографий не совсем правильно. Поэтому мы решили сделать на основе этого приложения еще один отдельный тест рендеринга 3D-модели.
Как известно, в приложении Adobe Photoshop есть инструмент для создания 3D-моделей. Конечно, Photoshop не относится к категории специализированных приложений для создания 3D-моделей, и его возможности по работе с 3D крайне ограничены. Но в некоторых случаях, когда особых требований к создаваемой модели нет, удобно пользоваться именно этим приложением, если оно уже куплено и основная работа по подготовке макета ведется в нем. Наиболее часто Photoshop используется для создания 3D-текста с возможностью последующего рендеринга изображения в файл или рендеринга 3D-слоя.
В тесте мы выполняем рендеринг трехмерной модели логотипа нашей компании, который был первоначально создан в Adobe Illustrator. Трехмерная модель создавалась в приложении Adobe Photoshop CC 2018, размер модели составляет 800×70 пикселей, рендеринг производится в файл формата JPEG методом трассировки лучей (Ray Traced Final) с порогом качества (High Quality Threshold) равным 5.
Конечный результат рендеринга нашей простейшей модели показан на картинке.
Естественно, тест рендеринга 3D-текста в приложении Adobe Photoshop CC 2018 мы будем относить к логической группе тестов рендеринга.
Еще раз повторим, что можно долго рассуждать о том, почему Photoshop не лучший инструмент для работы с 3D-моделями, но возможность создания 3D-моделей в этом приложении есть, и многие этим пользуются.
Теперь о результатах теста. Как в случае любого рендера, тест с рендерингом в Photoshop очень эффективно (на 100%) загружает все доступные ядра процессора. Результат этого теста, то есть время рендеринга, зависит исключительно от производительности процессора.
Заключение
В этой статье мы подробно рассмотрели тесты на основе приложения Adobe Photoshop CC 2018, которые в дальнейшем будут использоваться в нашем тестовом пакете iXBT Application Benchmark 2018. В следующей статье цикла, посвященного разработке нового пакета тестов на основе реальных приложений, мы рассмотрим приложения Adobe Photoshop Lightroom Classic CC 2018 и Phase One Capture One Pro v10.