8 votos

¿Por qué Illustrator se ralentiza a un 2% de velocidad cuando está en segundo plano?

Regularmente ejecuto un .jsx script en Adobe Illustrator que guarda un montón de archivos en un formato particular.

  • mientras Illustrator es la aplicación activa, ejecutando el script en 5 archivos tardan 23 segundos .

  • Cuando Illustrator no es la aplicación principal, la ejecución del script en 5 archivos tardan más de 5 minutos .

  • Según Monitor de actividad , Illustrator está utilizando alrededor de 75% de la CPU cuando está en primer plano pero se regula a menos de 2% cuando está en segundo plano .

  • Según Activity Monitor, La App Nap no se utiliza .

¿Por qué ocurre esto y hay alguna forma de cambiarlo?

Me gustaría poder hacer otras tareas mientras espero a Illustrator. Tal y como están las cosas, me veo obligado a mantener Illustrator en primer plano.

Algunas cosas que he probado : Yo sabía que

sudo sysctl debug.lowpri_throttle_enabled=0

funcionó para acelerar las copias de seguridad de Time Machine, así que pensé que podría ayudar en este caso. No tuvo ningún efecto .

También he probado a desactivar App Nap:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

No tuvo ningún efecto .

He intentado TinkerTool pero creo que sólo es una interfaz gráfica para cambiar el lowpri_throttle_enabled el escenario. No tuvo ningún efecto .

6voto

Douglas Puntos 10417

Esto parece ser un problema de Adobe; concretamente, el código base de la IA no es multihilo.

Pude encontrar una discusión en los foros de Adobe que aborda su problema exacto - Hacer que Illustrator sea multihilo en la CPU

El rendimiento de Illustrator es horrible, es lento y torpe en todas las operaciones, excepto en las más básicas. Está limitado a un solo hilo de la CPU, lo que es ridículo ahora en la era de las CPUs multinúcleo y multihilo, y ha sido así durante muchos años. No puede manejar las tareas de fondo y está completamente fuera de la paridad en la función y el rendimiento con otros programas de Adobe como Photoshop e inDesign.

Énfasis mío

Lamentablemente, si el código no puede soportar las operaciones de la CPU en segundo plano, no hay nada que pueda hacer desde la perspectiva de su Mac para acelerar las cosas. Como todos los usuarios del foro aceptan (a regañadientes), la única solución es esperar una actualización de Adobe.

Por qué esto es así

En general, las aplicaciones en segundo plano están "en pausa" - técnicamente, se les da baja prioridad . Lo que esto significa es que la ejecución se detiene hasta que la CPU tiene la oportunidad de ejecutar algunos comandos más; normalmente durante una operación de obtención de IO. La gestión de este proceso se denomina "Programación de la CPU" y es algo que el hardware maneja por ti - la aplicación sólo tiene que permitirlo (ceder el control).

Una idea errónea sobre el multihilo es que las cosas se ejecutan más rápido. Este no es el caso, simplemente suceden más cosas simultáneamente aprovechando mejor los recursos de la CPU. Es como tener un solo taxi (transporte de personas) que traslada a la gente entre un aeropuerto y un centro de conferencias frente a cuatro que lo hacen. Todos van a la misma velocidad, sólo que ahora se mueven más.

El hecho de que la aplicación sea "multihilo" permite que el hardware gestione y programe el tiempo de la CPU y, al haber más CPU que se puede asignar, los trabajos en segundo plano obtienen más recursos para realizar el trabajo.

0voto

Javaxpert Puntos 1107

Esta respuesta es de Mordy Golding Gerente de productos de Adobe Illustrator (2001-2004), en Quora :

Los gráficos vectoriales tienen sus ventajas y desventajas. Esta, lamentablemente, es una de las desventajas. Esto se debe a que los gráficos vectoriales se dibujan en un orden de apilamiento lineal.

Tomemos un ejemplo sencillo: una sola capa con un solo rectángulo. Duplique esa capa 100 veces. Aunque sólo la capa superior es visible, Illustrator dibuja cada rectángulo desde la capa más baja hasta la más alta. Illustrator no puede dibujar la capa 50 hasta que las 49 anteriores estén hechas. Esto es diferente a photoshop que sólo se preocupa de los píxeles que son visibles en última instancia.

Ampliando el concepto. Digamos que tienes 4 núcleos. Podrías tomar un archivo de photoshop y dividirlo en una cuadrícula de 4 áreas y decirle a cada núcleo que dibuje 1 área - todos al mismo tiempo. Eso es porque un píxel en una cuadrícula no tiene ningún impacto en los píxeles de otra área de la cuadrícula. Dado que puedes dividir una foto en múltiples áreas independientes, puedes asignar múltiples núcleos para renderizar cada área simultáneamente.

Sin embargo, en illustrator, cada objeto se dibuja en el orden en que aparece en el orden de apilamiento. Así que si divido una imagen en una cuadrícula de cuatro, todavía tengo que construir todo el arte objeto por objeto sin importar en qué cuadrícula se encuentre. Lo que significa que los 4 núcleos tendrían que esperar hasta que todos los objetos se dibujen antes de renderizar.

Esto significa que sólo algunos tipos de funciones pueden soportar la funcionalidad multinúcleo en Illustrator. Por ejemplo, si imprimes un archivo grande, illustrator pasará la cola de impresión a otro núcleo y te devolverá a tu documento para que sigas trabajando inmediatamente. Pero, lamentablemente, esto no es posible para acelerar tareas lineales como dibujar/renderizar arte.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X