8 votes

Pourquoi la vitesse d'Illustrator est-elle réduite à 2 % lorsqu'il est en arrière-plan ?

J'exécute régulièrement un script .jsx dans Adobe Illustrator qui enregistre un tas de fichiers dans un format particulier.

  • alors qu'Illustrator est l'application active, l'exécution de la script sur 5 fichiers prend 23 secondes .

  • Quand Illustrator n'est pas l'application principale, l'exécution du script sur 5 fichiers prend plus de 5 minutes .

  • Según Moniteur d'activité Illustrator utilise environ 75 % du CPU au premier plan mais il est limité à moins de 2% en arrière-plan .

  • Selon le contrôleur d'activité, L'App Nap n'est pas utilisée .

Pourquoi cela se produit-il, et y a-t-il un moyen de changer cela ?

J'aimerais pouvoir effectuer d'autres tâches en attendant Illustrator. En l'état actuel des choses, je suis obligé de garder Illustrator au premier plan.

Certaines choses que j'ai essayées : Je le savais.

sudo sysctl debug.lowpri_throttle_enabled=0

a permis d'accélérer les sauvegardes Time Machine, j'ai donc pensé que cela pourrait être utile dans ce cas. Cela n'a eu aucun effet .

J'ai aussi essayé de désactiver App Nap :

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

Cela n'a eu aucun effet .

J'ai essayé TinkerTool mais je crois qu'il s'agit simplement d'une interface graphique permettant de modifier l'adresse de l'utilisateur. lowpri_throttle_enabled (accélérateur) réglage. Cela n'a eu aucun effet .

6voto

Douglas Points 10417

Il semble qu'il s'agisse d'un problème lié à Adobe ; en particulier, le code de base de l'IA n'est pas multithread.

J'ai pu trouver une discussion dans les forums d'Adobe qui traite de votre problème exact - Rendre Illustrator multi-filière sur le CPU

Les performances d'Illustrator sont terribles, il est lent et lourd pour toutes les opérations, sauf les plus basiques. Il est lié à un seul thread de processeur, ce qui est ridicule à l'ère des processeurs multi-cœurs et multi-threads, et ce depuis de nombreuses années. Il ne peut pas gérer les tâches d'arrière-plan et n'est absolument pas à la hauteur, en termes de fonctions et de performances, des autres logiciels Adobe tels que Photoshop et inDesign.

C'est moi qui souligne

Malheureusement, si le code ne peut pas prendre en charge les opérations du processeur en arrière-plan, il n'y a rien que vous puissiez faire du point de vue de votre Mac pour accélérer les choses. Comme les utilisateurs du forum l'acceptent tous (à contrecœur), la seule solution est d'attendre une mise à jour d'Adobe.

Pourquoi ?

D'une manière générale, les applications en arrière-plan sont "mises en pause" - techniquement, on leur donne faible priorité . Cela signifie que l'exécution s'arrête jusqu'à ce que l'unité centrale ait la possibilité d'exécuter d'autres commandes, généralement pendant une opération d'extraction d'entrée/sortie. La gestion de ce processus est appelée "ordonnancement du CPU" et le matériel s'en charge pour vous - l'application doit simplement l'autoriser (céder le contrôle).

Une idée fausse courante du multithreading est que les choses s'exécutent plus rapidement. Ce n'est pas le cas, il se passe juste plus de choses. simultanément en faisant un meilleur usage des ressources du CPU. C'est comme si un seul taxi (transporteur de personnes) faisait la navette entre un aéroport et un centre de conférence, alors que quatre personnes font la navette. Ils vont tous à la même vitesse, c'est juste que maintenant vous vous déplacez plus.

Le fait que l'application soit "multithread able" permet au matériel de gérer et de planifier le temps CPU et, comme il y a plus de CPU qui peut être alloué, les tâches d'arrière-plan obtiennent plus de ressources pour effectuer le travail.

0voto

Javaxpert Points 1107

Cette réponse provient de Mordy Golding Chef de produit pour Adobe Illustrator (2001-2004), chez Quora :

Les graphiques vectoriels ont leurs avantages et leurs inconvénients. Ceci, malheureusement, est l'un des inconvénients. En effet, les graphiques vectoriels sont dessinés dans un ordre d'empilement linéaire.

Prenons un exemple simple : prenez une seule couche avec un seul rectangle. Dupliquez ce calque 100 fois. Même si seule la couche supérieure est visible, Illustrator dessine chaque rectangle de la couche la plus basse à la plus haute. Illustrator ne peut pas dessiner le calque 50 tant que les 49 précédents ne sont pas terminés. C'est différent de Photoshop qui ne se préoccupe que des pixels qui sont finalement visibles.

Étendre le concept plus loin. Disons que vous avez 4 cœurs. Vous pourriez prendre un fichier Photoshop, le diviser en une grille de 4 zones et demander à chaque cœur de dessiner une zone, le tout en même temps. En effet, un pixel dans une grille n'a aucun impact sur les pixels d'une autre zone de la grille. Puisque vous pouvez diviser une photo en plusieurs zones indépendantes, vous pouvez affecter plusieurs cœurs au rendu de chaque zone simultanément.

Cependant, dans illustrator, chaque objet est dessiné dans l'ordre où il apparaît dans l'ordre d'empilement. Ainsi, si je divise une image en une grille de quatre, je dois toujours construire toutes les illustrations objet par objet, quelle que soit la grille dans laquelle elles se trouvent. Les 4 cœurs devront donc attendre que tous les objets soient dessinés avant d'effectuer le rendu.

Cela signifie que seuls certains types de fonctions peuvent prendre en charge la fonctionnalité multi-cœur dans Illustrator. Par exemple, si vous imprimez un fichier volumineux, Illustrator confiera l'impression à un autre cœur et vous ramènera à votre document pour continuer à travailler immédiatement. Mais malheureusement, cela n'est pas possible pour accélérer les tâches linéaires comme le dessin ou le rendu d'art.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X