Вопрос или проблема
В течение многих лет я испытываю серьезные проблемы с производительностью во всех браузерах на движке Chromium и приложениях Electron на моем Mac. Я подал отчет о баге в проект Chromium и внес свои находки в другие отчеты о похожих проблемах, но в настоящее время мне нужно временное решение.
Я обнаружил, что запуск Chrome с ключом командной строки --disable-gpu-compositing
практически полностью решает эту проблему и делает это лучше, чем полное отключение аппаратного ускорения.
Однако на macOS единственный способ запустить Chrome таким образом – это запуск из терминала, так как эта опция недоступна в настройках или в chrome:flags
. Это не идеально, так как мне приходится поддерживать оболочные алиасы для нескольких приложений (Chrome, Chrome Canary, Edge, VS Code и Slack), и каждое из них открывает окно терминала с выводом консоли.
В идеале мне хотелось бы иметь способ глобально отключить GPU-композитинг, но сохранить другие аспекты аппаратного ускорения для всех приложений Chromium и Electron на этом компьютере. Я думаю, что что-то подобное должно быть достижимо путем модификации списка блокировки GPU. Возможно ли как-то модифицировать его на локальном уровне?
Добавьте --disable-gpu-compositing
так же, как
chromium --disable-gpu-compositing
Или:
anyElectronapp --disable-gpu-compositing
Ответ или решение
Чтобы отключить GPU-композирование во всех экземплярах Chrome и Electron на macOS, вам нужно выполнить несколько шагов, поскольку macOS не предоставляет встроенных настроек для такого изменения. Однако вы можете использовать командные строки и автозагрузку для автоматизации этого процесса, чтобы избежать необходимости вручную запускать приложения из терминала.
Шаг 1: Создание скрипта для запуска браузеров
Вы можете создать простые скрипты для каждого из ваших приложений. Это устранит необходимость запускать терминал и позволит вам отключить GPU-композирование при каждом запуске.
-
Откройте текстовый редактор (например, TextEdit или любой другой, который вы предпочитаете).
-
Добавьте следующие строки для каждого приложения. Здесь представим цикл создания такого скрипта для Chrome:
#!/bin/bash open -a "Google Chrome" --args --disable-gpu-compositing
Для других приложений, таких как Chromium, Chrome Canary, Edge, VS Code или Slack, просто замените
"Google Chrome"
на имя нужного приложения. Например, для VS Code это будет:open -a "Visual Studio Code" --args --disable-gpu-compositing
-
Сохраните файл с расширением
.command
, например,launch_chrome.command
. -
Настройте права доступа для выполнения файла. Откройте терминал и выполните:
chmod +x /path/to/your/launch_chrome.command
Шаг 2: Автозапуск приложений
Если вы хотите, чтобы ваши новые скрипты запускались вместо обычных ярлыков приложений, вы можете удалить привычные ярлыки из дока и заменить их вашими .command
файлами.
Шаг 3: Дополнительные рекомендации
-
Регулярные обновления: Убедитесь, что вы регулярно обновляете свои скрипты, особенно если версии ваших браузеров меняются.
-
Проверка производительности: Протестируйте каждое приложение, чтобы убедиться, что отключение GPU-композирования действительно положительно сказывается на производительности.
-
Обратная связь: Продолжайте делиться своими находками в bug tracker для Chromium, так как это может помочь в будущем исправить проблемы производительности для всех пользователей.
Следуя этим шагам, вы сможете настроить ваши приложения так, чтобы они запускались с необходимыми параметрами, и избежать появления дополнительных окно терминала. К сожалению, визуально изменить настройки GPU блокировки на уровне системы не получится, так как такие изменения требуют поддержки со стороны разработчиков приложений или системного программного обеспечения.