Wire,
Är det någon prestandaskillnad mellan att köra AS eller shell script?
Vänligen, Ylan
Lite för generell fråga: Shell är snabbare på vissa saker, AS på annat. I de olika exemplen man ser här så är Shell mycket långsammare, därför att "osascript" kompileras i realtid, för varje loop, vilket tar tid, och sedan tar det väldigt mycket tid att för varje loop switcha från shell till OSA> AS> Shell.
Wires AS-exempel ser man istället håller sig enbart inom Finder, och är som alla AS redan kompilerat, därför är det mycket snabbare
Ett grovt, och kanske något missvisande, prestandatest är att först köra ett AppleScript som
repeat 100 times
get current date
end repeat
vilket är praktiskt taget momentant
Testa sedan att i terminalen köra:
for ((var=1; var <= 100 ; var++))
do
osascript -e 'current date'
done
Vilket som synes är väldigt långsamt. Delvis beror det naturligtvis på att resultatet visas i Terminalen, men i allt väsentligt beror det på att kompilering och processbyte sker vid varje loop, så genom att endast göra en kompilering och endast ett processbyte så kan man uppnå nästan samma resultat via osascript, genom att istället skriva så häri Terminalen:
osascript -e 'repeat 100 times' -e 'get current date' -e 'end repeat'
När det gäller effektvitet så är däremot vare sig Wires eller mitt exempel helt optimalt, eftersom "on idle" hade varit ett bättre val än "delay" , men det är en annan historia...