Hur ta tid på något med fraktioner av sekunder?

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2011-08-24 17:21

Jag vill klocka olika saker i applescript med större precision än sekunder. Går det? Hur tar man ut de tusendelar som syns i andra programs loggfiler?

Det beror på vad du vill göra.

AppleScript i sig självt har bara en upplösning på hela sekunder. Vill man ha högre än så finns det tre huvudspår:

1) Scripting Additions
2) AppleScript ObjectiveC (ny grej fr.o.m. SnowLeopard, som innebär att du kan använda Cocoa-ramverk och objective C-kod, men skriva en stor del av programmet med AppleScript i övrigt)
3) Använda "do shell script" och så använda ett språk/shell som har högre upplösning, dvs. millisekunder. Nackdelen är att du inte kan använda denna metod t.ex. inne i ett AppleScript och ha bibehållen prestanda och tillförlitlighet , eftersom det är så stort overhead att initiera ett nytt shell.

Som synes är ingen av spåren riktigt bra. Därför är det avgörande vad man vill uppnå och vilket problem man försöker lösa.

Vill man t.ex. ägna sig åt "profiling" så gör man det genom att repetera de saker man vill "profilera" och ta ett genomsnitt (eller så skriver man ExtendScript/JavaScript, där ExtendScript Toolkit har en mkt användbar profiler)

Vill man bara jämföra/sortera andra programs loggar så behandlar man det som strings i stället för date class, alternativt skapar en egen hybridklass, där man använder date med upplösningen på sekundnivå, och sedan använder millisekund-infon som sträng. Det finns också andra mer crazy varianter på det, men de gitter jag inte förklara just nu.

Så med andra ord, snöa inte in på det du sett som lösning, utan presentera det övergripande problemet du försöker lösa, så kan vi diskutera det

  • Medlem
  • 2011-08-24 21:32

Jag vill fånga hur lång tid en loop tar att gå igenom för varje varv. Jag vill veta varför vissa varv tar längre tid än andra. Räknar jag sekunder hinner det går för många loopar inom loppet av en sekund.
Men det är inte livsviktigt.

1
Bevaka tråden