Чому Illustrator утримується до 2% швидкості, коли він знаходиться у фоновому режимі?


8

Я регулярно запускаю .jsx скрипт в Adobe Illustrator, який зберігає купу файлів у певному форматі.

  • у той час як Illustrator є активним додатком, запуск сценарію на 5 файлів займає 23 секунди .

  • Якщо Illustrator - не головне додаток, виконання сценарію на 5 файлах займає більше 5 хвилин .

  • За даними Monitor Monitor , Illustrator використовує близько 75% процесора, коли на передньому плані, але у фоновому режимі зменшено менше ніж 2% .

  • За інформацією Monitor Monitor, App Nap не використовується .

Чому це відбувається і чи є спосіб це змінити?

Я хотів би мати можливість виконувати інші завдання, чекаючи Illustrator. На даний момент я зобов'язаний тримати Illustrator на першому плані.

Деякі речі, які я спробував : я це знав

sudo sysctl debug.lowpri_throttle_enabled=0

працював над прискоренням резервного копіювання Time Machine, тому я хоч і може допомогти в цьому випадку. Це не мало ефекту .

Я також спробував відключити App Nap:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

Це не мало ефекту .

Я спробував TinkerTool , але я вважаю, що це просто GUI, щоб змінити налаштування lowpri_throttle_enabled . Це не мало ефекту .

Відповіді:


6

Здається, це проблема Adobe; конкретно, база коду для AI не є багатопотоковою.

Мені вдалося знайти дискусію на форумах Adobe, яка стосується вашої точної проблеми - Зробіть Illustrator багатопотоковою на процесорі

Виконання ілюстратора жахливе, його повільність і млявість взагалі, крім самих основних операцій. Він пов'язаний лише з одним процесором процесора, що зараз смішно в епоху багатоядерних і багатопотокових процесорів, і так було вже багато років. Він не може впоратися з фоновими завданнями і повністю не відповідає співвідношенню функцій та продуктивності з іншими програмами Adobe, такими як Photoshop та inDesign.

Наголос мій

На жаль, якщо код не може підтримувати фонові операції з процесором, ви нічого не можете зробити з точки зору вашого Mac, щоб прискорити роботу. Оскільки всі користувачі форуму (нащадно) приймають, єдине рішення - чекати оновлення від Adobe.

Чому це так

Взагалі кажучи, програми у фоновому режимі "призупинені" - технічно їм надається низький пріоритет . Це означає, що виконання зупиняється до тих пір, поки процесор не зможе виконати ще кілька команд; зазвичай під час операції з виведення IO. Управління цим процесом називається "Планування процесора", і це те, з чим апаратне обробляє для вас - додаток просто повинен це дозволити (відмовитися від контролю).

Поширене помилкове уявлення про багатопотоковість полягає в тому, що все виконується швидше. Це не так, це просто більше речей, що відбуваються одночасно, краще використовувати ресурси процесора. Це схоже на те, що єдине таксі (перевізник людей) перевозить людей між аеропортом та конференц-центром проти чотирьох, що здійснюють трансфер. Вони йдуть однаковою швидкістю, просто зараз ти рухаєшся більше.

Додаток, який підтримує багатопотоки, дозволяє апаратурі керувати та планувати час процесора, оскільки, можливо, виділяється більше процесора, фонові завдання отримують більше ресурсів, щоб виконати роботу.


1
Чи можете ви пояснити коротко, чому програма, яка не має декількох потоків, буде повільнішою на задньому плані? Моя фантазія пропонує: одночасно працює N потоків, і Mac автоматично використовує 85% своїх ресурсів на "головному" потоці, орієнтованому на користувача, і 15% розподіляється на всі інші потоки. Я нічого не знаю про це, я просто складаю.
Ендрю Свіфт

1
Взагалі кажучи, програми з однопотоковою передачею "призупиняються" на задньому плані та "запускаються" на передньому плані. Щоб програма залишалася живою у фоновому режимі, вона миттєво "опитує" процесор і закликає деякі функції, щоб виконувати такі дії (наприклад, збереження файлу). Йдеться не про "виділення процесора" саме по собі. Читаючи форуми, люди з 8 та 16 основними Mac профі бачать лише одне ядро, яке використовується під час роботи AI, тобто просто не користуватися всіма ресурсами.
Аллан

1
Якщо ви хочете оновити свою відповідь цим описом, я би радий обрати її як правильну.
Ендрю Свіфт

1
@Allan Wow! Я б ніколи не здогадувався, що Adobe Illustrator не підтримує багатопотоковість! Мені здається, ймовірним кандидатом на багатопотоковість. Потім знову знадобилося Microsoft, щоб підтримати багатопотокові програми з Excel (ще одним очевидним кандидатом), і навіть зараз його реалізація не дуже хороша. Без сумніву, з часом все більше додатків підтримуватимуть це.
Мономет

1
@Monomeeth - я згоден. Я не міг повірити, що AI був настільки далеко за кривою Dev. Одне, що я читав на форумі - це користувачі, що скаржаться на те, що CC фактично дозволить Adobe збирати доходи, а не фіксувати продукт. Коли Apple переходить до власних процесорів і вбиває підтримку 32-бітних додатків, Adobe може бути змушена виправити щось.
Аллан

0

Ця відповідь отримана від Mordy Golding , менеджера з продуктів Adobe Illustrator (2001-2004), у Quora :

Векторна графіка має свої переваги та недоліки. Це, на жаль, є одним із мінусів. Це тому, що векторна графіка малюється в лінійному порядку укладання.

Візьмемо один простий приклад - візьміть один шар з одним прямокутником. Дублюйте цей шар 100 разів. Незважаючи на те, що видно лише верхній шар, ілюстратор малює кожен прямокутник від самого нижнього шару до верхнього. Illustrator не може намалювати шар 50, поки не будуть виконані попередні 49. Це на відміну від фотошопу, який просто стосується того, які пікселі видно в кінцевому рахунку.

Подовження концепції далі. Скажіть, у вас було 4 ядра. Ви можете взяти файл фотошопа і розділити його на сітку з 4 областей і сказати кожному ядру намалювати 1 область - все одночасно. Це тому, що піксель в одній сітці ніяк не впливає на пікселі в іншій області сітки. Оскільки ви можете розділити фотографію на декілька незалежних областей, ви можете призначити кілька ядер для візуалізації кожної області одночасно.

Однак в ілюстраторі кожен об'єкт малюється в тому порядку, який він відображається в порядку укладання. Отже, якщо я розділити зображення на сітку з чотирьох, я все одно повинен будувати всі об'єкти мистецтва за об'єктом, незалежно від того, в якій сітці він знаходиться. Значить, всі 4 ядра все одно доведеться чекати, поки всі об’єкти будуть намальовані перед візуалізацією.

Це означає, що лише деякі види функцій можуть підтримувати багатоядерні функції в Illustrator. Наприклад, якщо ви надрукуєте великий файл, ілюстратор передасть котушку друку в інше ядро ​​і поверне вас назад до свого документа, щоб продовжити роботу негайно. Але, на жаль, це неможливо для прискорення лінійних завдань, таких як малювання / візуалізація мистецтва.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.