Así que he estado trabajando en un simple AppleScript para tratar de ayudar a administrar mi correo electrónico en el Correo de OS X, y parece que funciona bien con un problema importante; el rendimiento del script 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 rendimiento es tan malo como es. Aún más extraño, ¡la duración del tiempo para completar cada operación en un bucle parece aumentar con el tiempo! Por ejemplo, mi script debe coincidir con unos 300 correos electrónicos (procesados de una lista que totaliza alrededor de 500), después de cinco minutos coincidirá con alrededor de 100 correos electrónicos, pero después de veinte solo habrá coincidido con unos 125, habiendo disminuido la velocidad hasta indica que se tarda casi un minuto en procesar cada correo electrónico y continúa empeorando hasta que el script termina finalmente después de aproximadamente tres horas.
Aquí hay una versión simplificada del script:
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 tipográfico de mi parte para adelgazar, pero lo anterior es el comportamiento básico de la secuencia de comandos y muestra el mismo problema cuando se ejecuta en las mismas cuentas y mensajes de correo electrónico.
Lo que me gustaría saber es, ¿cuál es la razón por la que una secuencia de comandos como esta experimentaría ralentizaciones cada vez mayores y existe una manera de optimizarla para evitar este tipo de problemas?
Es simplemente desafortunado que no podamos ver las carpetas inteligentes en Mail, ya que podría reducir significativamente la cantidad de mensajes que necesitan ser buscados (y evitar la necesidad de probarlos).
[editar] Además, debo tener en cuenta que durante la operación, el proceso de ejecución del script aumentará rápidamente al 100% del uso de la CPU, por lo que AppleScript definitivamente está haciendo algo , ¡simplemente no puedo entender qué!