Regularnie uruchamiam skrypt .jsx w programie Adobe Illustrator, który zapisuje kilka plików w określonym formacie.
podczas gdy Illustrator jest aktywną aplikacją, uruchomienie skryptu na 5 plikach zajmuje 23 sekundy .
Gdy program Illustrator nie jest najważniejszą aplikacją, uruchomienie skryptu na 5 plikach zajmuje więcej niż 5 minut .
Według Activity Monitora Illustrator zużywa około 75% procesora na pierwszym planie, ale w tle jest dławiony do mniej niż 2% .
Według Activity Monitor App Nap nie jest używany .
Dlaczego tak się dzieje i czy można to zmienić?
Chciałbym móc wykonywać inne zadania, czekając na program Illustrator. Na obecnym etapie jestem zobowiązany do utrzymywania programu Illustrator na pierwszym planie.
Niektóre rzeczy próbowałem : wiedziałem o tym
sudo sysctl debug.lowpri_throttle_enabled=0
pracowałem nad przyspieszeniem tworzenia kopii zapasowych Time Machine, więc pomyślałem, że może to pomóc w tym przypadku. Nie miało to wpływu .
Próbowałem również wyłączyć App Nap:
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
Nie miało to wpływu .
Próbowałem TinkerTool , ale wierzę, że to tylko GUI, aby zmienić ustawienie lowpri_throttle_enabled . Nie miało to wpływu .
źródło
Ta odpowiedź pochodzi od Mordy Golding , Product Managera dla Adobe Illustrator (2001-2004), w Quora :
Grafika wektorowa ma swoje zalety i wady. Jest to niestety jedna z wad. Dzieje się tak, ponieważ grafika wektorowa jest rysowana w liniowej kolejności.
Weźmy jeden prosty przykład - weź pojedynczą warstwę z jednym prostokątem. Duplikuj tę warstwę 100 razy. Mimo że widoczna jest tylko górna warstwa, program Illustrator rysuje każdy prostokąt od najniższej warstwy do góry. Program Illustrator nie może narysować warstwy 50, dopóki poprzednie 49 nie zostaną wykonane. W przeciwieństwie do Photoshopa, który martwi się, które piksele są ostatecznie widoczne.
Dalsze rozszerzenie koncepcji. Powiedz, że miałeś 4 rdzenie. Możesz wziąć plik Photoshopa i podzielić go na siatkę 4 obszarów i powiedzieć każdemu rdzeniu, aby narysował 1 obszar - wszystkie jednocześnie. Jest tak, ponieważ piksel w jednej siatce nie ma żadnego wpływu na piksele w innym obszarze siatki. Ponieważ możesz podzielić zdjęcie na wiele niezależnych obszarów, możesz przypisać wiele rdzeni do renderowania każdego obszaru jednocześnie.
Jednak w programie Illustrator każdy obiekt jest rysowany w kolejności, w jakiej pojawia się w stosie. Więc jeśli podzielę obraz na czteroosobową siatkę, nadal będę musiał budować cały obiekt artystyczny według obiektu, bez względu na to, w jakiej on jest sieci. Oznacza to, że wszystkie 4 rdzenie będą musiały poczekać, aż wszystkie obiekty zostaną narysowane przed renderowaniem.
Oznacza to, że tylko niektóre funkcje mogą obsługiwać funkcje wielordzeniowe w programie Illustrator. Na przykład, jeśli wydrukujesz duży plik, program Illustrator przekaże buforowanie wydruku do innego rdzenia i wróci z powrotem do dokumentu, aby natychmiast kontynuować pracę. Niestety nie jest to możliwe, aby przyspieszyć zadania liniowe, takie jak rysowanie / renderowanie sztuki.
źródło