Quindi ho lavorato su un semplice AppleScript per cercare di aiutare a gestire la mia posta elettronica in Mail di OS X e, a quanto pare, funziona perfettamente con uno dei problemi principali; la performance della sceneggiatura è orribile.
Ora, so che AppleScript non è sempre il linguaggio di scripting più veloce, ma non sono sicuro del perché le prestazioni siano così negative. Ancora più strano, il tempo necessario per completare ogni operazione in un ciclo sembra aumentare nel tempo! Ad esempio, il mio script deve corrispondere a circa 300 e-mail (elaborate da un elenco di circa 500), dopo cinque minuti corrisponderà a circa 100 e-mail, ma dopo le venti sarà pari solo a circa 125, dopo aver rallentato fino a indica che ci vuole quasi un minuto per elaborare ogni e-mail e continua a peggiorare fino a quando la sceneggiatura non termina dopo circa tre ore.
Ecco una versione semplificata dello 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
Dovrai perdonare qualsiasi refuso da parte mia dimagrendo, ma quanto sopra è il comportamento di base dello script e presenta lo stesso problema quando viene eseguito attraverso gli stessi account e messaggi di posta elettronica.
Quello che mi piacerebbe sapere è, qual è la ragione per cui uno script come questo subirà rallentamenti crescenti, e c'è un modo per ottimizzarlo per evitare questo tipo di problemi?
È solo un peccato che non possiamo vedere le cartelle intelligenti in Mail, in quanto potrebbe ridurre in modo significativo il numero di messaggi che devono essere cercati (ed evitare la necessità di testarli).
[modifica] Inoltre, dovrei notare che durante l'operazione il processo che esegue lo script si insinuerà rapidamente al 100% di utilizzo della CPU, quindi AppleScript sta sicuramente facendo qualcosa , non riesco a capire cosa!