Компании Microsoft и Adobe совместными усилиями оптимизировали работу графического редактора Photoshop для Windows, добившись существенного увеличения производительности для систем архитектуры x64 и для устройств на базе ARM. Редактор стал работать на 20 % быстрее.
Источник изображения: techspot.com
В рамках партнёрства специалисты сосредоточились на оптимизации процессов среды Visual C++, поскольку популярный графический редактор написан на языке C++ и компилируется с помощью инструмента MSVC. Улучшения затронули ключевые операции, зависящие от мощности центрального процессора, включая время открытия файлов и отзывчивость инструментов редактора.
Изначально команды попытались применить мощный метод оптимизации по профилю PGO (Profile-Guided Optimization), собирающий данные из тестовых запусков исполняемых файлов для адаптации программы под реальные сценарии использования. Данный метод не сработал из-за сильного усложнения процесса сборки кода, поэтому разработчики перешли к использованию технологии SPGO (Sample Profile-Guided Optimization). Эта альтернативная система базируется на сборе аппаратных показателей непосредственно из релизных файлов и отличается большей гибкостью при получении аналитики.
Как выяснилось, профильная оптимизация SPGO оказалась полностью совместима с рабочей средой Adobe и позволила разработчикам опираться на обратную связь компилятора без необходимости ручной настройки. Сочетание SPGO с активированным режимом максимальной производительности MSVC обеспечило фактический прирост скорости работы программы на 20 % для систем x64 и на 13 % для архитектуры Arm. Достигнутые показатели превзошли стандартные ожидания от применения этой оптимизации, обычно варьирующиеся в пределах от 5 до 15 %.
Старший разработчик программного обеспечения Adobe Джон Фицджеральд (John Fitzgerald) отметил заметное сокращение задержек при рисовании и обработке фильтров, положительно влияющее на непрерывность профессионального творческого процесса, а представители Microsoft отметили, что успешный опыт интеграции MSVC и SPGO станет основой для дальнейшего повышения производительности программного обеспечения во всей экосистеме.