Desaceleración exponencial de Applescript

Así que he estado trabajando en un AppleScript simple para tratar de ayudar a administrar mi correo electrónico en el Correo de OS X, y aparentemente lo estoy haciendo bien con un problema importante; la ejecución del guión es horrible.

Ahora, sé que AppleScript no siempre es el lenguaje de scripting más rápido, pero no estoy seguro de por qué el performance es tan malo como lo es. ¡Incluso más extraño, el time para completar cada operación en un bucle parece boost con el time! Por ejemplo, mi script debe coincidir con unos 300 correos electrónicos (procesados ​​de una list que asciende a alnetworkingedor de 500), después de cinco minutos coincidirá con alnetworkingedor de 100 correos electrónicos, pero después de los 20 solo tendrá un valor de 125, habiendo disminuido la velocidad hasta el señalan que demora casi un minuto procesar cada correo electrónico y continúa empeorando hasta que el script eventualmente termina después de unas tres horas.

Aquí hay una versión simplificada del guión:

set ignoreTheseMailboxes to { "Inbox", "Drafts", "Junk", "Sent", "Trash" } set expiryDate to (current date) - (45 * days) as date set myLogFile to open for access POSIX file "/Users/username/Desktop/test.log" with write permission tell application "Mail" set theAccounts to every account repeat with eachAccount in theAccounts set theMailboxes to mailboxes in eachAccount write name of eachAccount & return to myLogFile repeat with eachMailbox in theMailboxes if (ignoreTheseMailboxes does not contain (name of eachMailbox) then write " " & name of eachMailbox & return to myLogFile set theMessages to messages in eachMailbox repeat with eachMessage in theMessages if date received of eachMessage <= expiryDate then write " " & subject of eachMessage & return to myLogFile end if end repeat end if end repeat end repeat end tell close myLogFile 

Tendrás que perdonar cualquier error de ortografía de mi adelgazamiento, pero lo anterior es el comportamiento básico de la secuencia de commands y muestra el mismo problema cuando se ejecuta en las mismas counts de correo electrónico y posts.

Lo que me gustaría saber es, ¿cuál es la razón por la que un script como este experimentaría un aumento en la desaceleración, y hay una forma de optimizarlo para evitar este tipo de problemas?

Es desafortunado que no podamos ver las carpetas inteligentes en Correo, ya que esto podría networkingucir significativamente la cantidad de posts que necesitan ser buscados (y evitar la necesidad de probarlos).

[edit] Además, debo tener en count que, durante la operación, el process que ejecuta el script se propagará rápidamente al 100% de uso de la CPU, por lo que AppleScript definitivamente está haciendo algo , ¡no puedo entender qué!

  • ¿Cómo ejecuto un script bash que requiere privilegios de root?
  • "Sed" o "awk" lanzados al abrir la window de la terminal
  • Gancho de inicio / detención de la aplicación OS X
  • ¿Cómo ejecutar el script de Unix en la pantalla de inicio de session antes de que el usuario inicie session?
  • Argumento inválido usando ídem
  • ¿Puedo usar la Terminal para encontrar todas las tags OpenMeta en mi sistema?
  • ¿Por qué configurar la image como su propio icono con sorbos produce un icono borroso? ¿Hay alguna alternativa?
  • El assembly de acciones de Samba en / volúmenes sin pelusas de GUI
  • One Solution collect form web for “Desaceleración exponencial de Applescript”

    Parece que el problema no está en AppleScript, sino en Script Editor, luego de confirmarlo con un ingeniero de Apple. Todavía no estoy convencido de por qué este debería ser el caso, pero la secuencia de commands funciona mucho mejor cuando se ejecuta mediante osascript , especialmente después de refactorizarla para usar una statement whose en la búsqueda de posts, en lugar de iterar sobre ellos con una condición if .

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).