Gå till innehåll
Just nu i M3-nätverket

Långsamt AppleScript på Intel Macarna?


OldMac

Rekommendera Poster

Jag hittade följande information angående applescript på Intel:

 

I hadn’t seen this documented anywhere else, and just stumbled across it… I wanted to update several AppleScript applets that were PowerPC applications into Univeral binaries.

 

Note I’m talking about the sort of AppleScript applications that one builds with Script Editor and saving the script as an application - not AppleScript Studio apps.

 

When you save an AppleScript in Script Editor, there are several options in the File Format menu. If you choose “application”, you’ll get a PowerPC-only app. However, if you choose “application bundle”, you’ll get a Universal app.

 

So open your AppleScript apps in Script Editor, and resave them as “application bundles” and you are set!

403015[/snapback]

 

 

Vad jag inte tycker är oklart i ovanstående är om det handlar om äldre skript-filer som har flyttat över till Intel-Macarna, eller om de är återskapade (nyskrivna)? Att gamla skriptfiler måste sparas på särskilda vis för att anpassas till Intel-Macarna är en sak - men jag tycker att det vore konstigt om varken applets (program) eller sparda manusfiler gick att köra i 'native mode' på Intel Mac, utan att Rosetta lägger sig i?

Länk till kommentar
Dela på andra webbplatser

Vad jag inte tycker är oklart i ovanstående är om det handlar om äldre skript-filer som har flyttat över till Intel-Macarna, eller om de är återskapade (nyskrivna)? Att gamla skriptfiler måste sparas på särskilda vis för att anpassas till Intel-Macarna är en sak - men jag tycker att det vore konstigt om varken applets (program) eller sparda manusfiler gick att köra i 'native mode' på Intel Mac, utan att Rosetta lägger sig i?

403069[/snapback]

 

Om du sparar från manusredigeraren som program så står det "PowerPC" som programtyp om du tittar på filens info i Finder.

 

Däremot, om du sparar som programpaket så står det "Universal" i filens info.

 

Så din misstanke stämmer - rosetta används om du inte sparar som programpaket.

Länk till kommentar
Dela på andra webbplatser

Problemet kommer utav att "Application" är den gamla typen av program, dvs den som innehöll allting i en fil medans "Application Bundle" är gjord som program i Mac OS X är tänkta att fungera med ett antal små filer som tillsammans bildar en applikation.

 

Dags att sluta använda Mac OS 9 tänket om man har en intel Mac med andra ord... :whistling:

Länk till kommentar
Dela på andra webbplatser

Om du sparar från manusredigeraren som program så står det "PowerPC" som programtyp om du tittar på filens info i Finder.

 

Däremot, om du sparar som programpaket så står det "Universal" i filens info.

 

Så din misstanke stämmer - rosetta används om du inte sparar som programpaket.

403082[/snapback]

 

 

Problemet kommer utav att "Application" är den gamla typen av program, dvs den som innehöll allting i en fil medans "Application Bundle" är gjord som program i Mac OS X är tänkta att fungera med ett antal små filer som tillsammans bildar en applikation.

 

Dags att sluta använda Mac OS 9 tänket om man har en intel Mac med andra ord...  :whistling:

403092[/snapback]

 

Kul - problemkällan verkar vara lokaliserad.

 

Har någon lust att spara mitt något uppsnofsade testskript (kräver inte längre huvudräkning) som programpaket och köra på sin Intel Mac? Annars får jag själv masa mig iväg och testa i närmaste Apple Store vid tillfälle. Att jag gärna ser flera test, beror på att jag tycker att de i forumet utförda testerna har visat på betydligt större prestandaskillnader än vad jag har sett tillskrivet Rosetta.

 

tell application "Finder"

activate

 

set cd1 to (current date) as string

 

repeat 1500 times -- uppehållande repetition

 

set cd2 to (current date) as string

 

end repeat

 

set tempString1 to characters 7 thru 8 of word 5 of cd1 as string

set tempString2 to characters 7 thru 8 of word 5 of cd2 as string

 

set int1 to tempString1 as integer

set int2 to tempString2 as integer

 

if int2 is greater than int1 then

 

set totalTime to int2 - int1 as integer

 

else

 

set temp to 60 - int1 as integer

 

set totalTime to temp + int2 as integer

 

end if

 

display dialog "Skriptet kördes på " & totalTime & " sekunder." buttons {"OK"} default button "OK" with icon note

 

end tell

Länk till kommentar
Dela på andra webbplatser

Följande är också en bekräftelse på att formatet i vilket skriptfilerna sparas kan vara väsentligt för vilken prestanda AppleScript får på Intel-Macar.

 

To: apple-script-users@lists.apple.com

 

"A suggestion on my local Mac forum is that the Intel Mac's require AppleScript files to be saved as bundles, else they will be run as PPC files by Rosetta.

 

Can anyone confirm or contradict that?"

 

Re:

 

"That's true if and only if you're referring to scripts saved as applications. The script itself does not contain any PPC or x86 code -- it's data that's fed to the AppleScript interpreter. What matters is the flavor of the executable running the script.

 

 

--Chris Nebel

AppleScript Engineering"

 

Det enda frågetecknet jag finner i svaret är hur 'script files' (AppleScript-filer sparda som manus) fungerar? Skulle alltså inte de köras av Rosetta?

 

Återstår att testa. :fundersam:

Länk till kommentar
Dela på andra webbplatser

Kul - problemkällan verkar vara lokaliserad.

 

Har någon lust att spara mitt något uppsnofsade testskript (kräver inte längre huvudräkning) som programpaket och köra på sin Intel Mac? Annars får jag själv masa mig iväg och testa i närmaste Apple Store vid tillfälle. Att jag gärna ser flera test, beror på att jag tycker att de i forumet utförda testerna har visat på betydligt större prestandaskillnader än vad jag har sett tillskrivet Rosetta.

 

tell application "Finder"

activate

 

set cd1 to (current date) as string

 

repeat 1500 times -- uppehållande repetition

 

  set cd2 to (current date) as string

 

end repeat

 

set tempString1 to characters 7 thru 8 of word 5 of cd1 as string

set tempString2 to characters 7 thru 8 of word 5 of cd2 as string

 

set int1 to tempString1 as integer

set int2 to tempString2 as integer

 

if int2 is greater than int1 then

 

  set totalTime to int2 - int1 as integer

 

else

 

  set temp to 60 - int1 as integer

 

  set totalTime to temp + int2 as integer

 

end if

 

display dialog "Skriptet kördes på " & totalTime & " sekunder." buttons {"OK"} default button "OK" with icon note

 

end tell

403219[/snapback]

 

Jag har testat koden och fick följande resultat:

Programpaket: 1 sekund

Script kört från manusredigeraren: 23 sekunder

 

Alrighty then

Länk till kommentar
Dela på andra webbplatser

Jag har testat koden och fick följande resultat:

Programpaket: 1 sekund

Script kört från manusredigeraren: 23 sekunder

 

Alrighty then

403381[/snapback]

 

 

Alrighty then!

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...