Ich führe regelmäßig ein .jsx-Skript in Adobe Illustrator aus, das eine Reihe von Dateien in einem bestimmten Format speichert.
Während Illustrator die aktive App ist, dauert die Ausführung des Skripts für 5 Dateien 23 Sekunden .
Wenn Illustrator nicht die beste App ist, dauert das Ausführen des Skripts für 5 Dateien mehr als 5 Minuten .
Laut Activity Monitor verwendet Illustrator im Vordergrund etwa 75 % der CPU , wird aber im Hintergrund auf weniger als 2 % gedrosselt .
Laut Aktivitätsmonitor wird App Nap nicht verwendet .
Warum passiert das und gibt es eine Möglichkeit, es zu ändern?
Ich würde gerne andere Aufgaben erledigen können, während ich auf Illustrator warte. So wie es aussieht, bin ich verpflichtet, Illustrator im Vordergrund zu halten.
Einige Dinge, die ich ausprobiert habe : Das wusste ich
sudo sysctl debug.lowpri_throttle_enabled=0
Ich habe daran gearbeitet, Time Machine-Backups zu beschleunigen, also dachte ich, dass es in diesem Fall helfen könnte. Es hatte keine Wirkung .
Ich habe auch versucht, App Nap zu deaktivieren:
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
Es hatte keine Wirkung .
Ich habe TinkerTool ausprobiert , aber ich glaube, dass es nur eine GUI ist, um die Einstellung lowpri_throttle_enabled zu ändern . Es hatte keine Wirkung .
Dies scheint ein Adobe-Problem zu sein; Insbesondere ist die Codebasis für KI nicht multithreaded.
Ich konnte in den Adobe-Foren eine Diskussion finden, die sich genau mit Ihrem Problem befasst – Machen Sie Illustrator auf der CPU mit mehreren Threads
Die Leistung von Illustrator ist schrecklich, es ist langsam und schwerfällig, außer bei den grundlegendsten Operationen. Es ist nur an einen einzigen CPU-Thread gebunden, was im Zeitalter von Multi-Core- und Multi-Thread-CPUs lächerlich ist, und das seit vielen Jahren. Es kann keine Hintergrundaufgaben bewältigen und ist in Funktion und Leistung völlig ungleich mit anderer Adobe-Software wie Photoshop und InDesign.
Betonung von mir
Wenn der Code Hintergrund-CPU-Vorgänge nicht unterstützen kann, können Sie aus Sicht Ihres Mac leider nichts tun, um die Dinge zu beschleunigen. Wie die Benutzer im Forum alle (widerwillig) akzeptieren, besteht die einzige Lösung darin, auf ein Update von Adobe zu warten.
Warum das so ist
Im Allgemeinen werden Anwendungen im Hintergrund "angehalten" - technisch gesehen haben sie eine niedrige Priorität . Das bedeutet, dass die Ausführung stoppt, bis die CPU Gelegenheit hat, weitere Befehle auszuführen; normalerweise während einer IO-Abrufoperation. Die Verwaltung dieses Prozesses wird "CPU-Scheduling" genannt und ist etwas, das die Hardware für Sie erledigt - die Anwendung muss es nur zulassen (die Kontrolle abgeben).
Ein weit verbreitetes Missverständnis beim Multi-Threading ist, dass Dinge schneller ausgeführt werden. Dies ist nicht der Fall, es passieren einfach mehr Dinge gleichzeitig , wodurch die CPU-Ressourcen besser genutzt werden. Es ist, als hätte man ein einzelnes Taxi (Personentransporter), das Personen zwischen einem Flughafen und einem Konferenzzentrum hin- und herbefördert, statt vier Personen, die das Hin- und Herpendeln übernehmen. Sie fahren alle gleich schnell, nur bewegst du dich jetzt mehr.
Da die Anwendung "multi-threadfähig" ist, kann die Hardware die CPU-Zeit verwalten und planen, und da mehr CPU zugewiesen werden kann, erhalten die Hintergrundjobs mehr Ressourcen, um die Arbeit zu erledigen.
Diese Antwort stammt von Mordy Golding , Produktmanager für Adobe Illustrator (2001-2004), bei Quora :
Vektorgrafiken haben ihre Vor- und Nachteile. Dies ist leider einer der Nachteile. Das liegt daran, dass Vektorgrafiken in einer linearen Stapelreihenfolge gezeichnet werden.
Nehmen Sie ein einfaches Beispiel – nehmen Sie eine einzelne Ebene mit einem einzelnen Rechteck. Duplizieren Sie diese Ebene 100 Mal. Obwohl nur die oberste Ebene sichtbar ist, zeichnet Illustrator jedes Rechteck von der untersten Ebene nach oben. Illustrator kann Ebene 50 nicht zeichnen, bis die vorherigen 49 fertig sind. Dies ist im Gegensatz zu Photoshop, das sich nur darum kümmert, welche Pixel letztendlich sichtbar sind.
Erweiterung des Konzepts. Angenommen, Sie hätten 4 Kerne. Sie könnten eine Photoshop-Datei nehmen und sie in ein Raster von 4 Bereichen aufteilen und jedem Kern sagen, dass er 1 Bereich zeichnen soll – alles gleichzeitig. Das liegt daran, dass ein Pixel in einem Raster keinerlei Einfluss auf Pixel in einem anderen Rasterbereich hat. Da Sie ein Foto in mehrere unabhängige Bereiche aufteilen können, können Sie mehrere Kerne zuweisen, um jeden Bereich gleichzeitig zu rendern.
In Illustrator wird jedoch jedes Objekt in der Reihenfolge gezeichnet, in der es in der Stapelreihenfolge erscheint. Wenn ich also ein Bild in ein Raster von vier aufteile, muss ich immer noch alle Kunstobjekte Objekt für Objekt erstellen, egal in welchem Raster es sich befindet. Das heißt, alle 4 Kerne müssten immer noch warten, bis alle Objekte gezeichnet wurden, bevor sie gerendert werden.
Dies bedeutet, dass nur einige Arten von Funktionen die Multicore-Funktionalität in Illustrator unterstützen können. Wenn Sie beispielsweise eine große Datei drucken, übergibt Illustrator das Druckspooling an einen anderen Kern und bringt Sie zurück zu Ihrem Dokument, um sofort weiterzuarbeiten. Aber leider ist dies nicht möglich, um lineare Aufgaben wie das Zeichnen/Rendern von Kunst zu beschleunigen.
Andy Schnell
Allan
Andy Schnell
Monomet
Allan
Monomet
jksoegaard