JSON Scriptlaufzeit

Gerade wenn man modular programmiert hat man verschachtelte Scripts, also Scripts werden von Scripts aufgerufen.

Im Debugger lässt sich nur schwer erkennen, an welchen Stellen oder Scripts es zu Performancekillern kommt.

Deshalb schreiben wir eine globale Variable als JSON, in der wir die Laufzeiten der einzelnen Scripts erfassen.

 

SetzeVar ( [

json = Wenn(IstLeer($$EXECUTETIMEJSON) ; "{}"; $$EXECUTETIMEJSON) ;

path = Austauschen(FilterZeichen(Hole ( ScriptName) ; "abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_") ; ["." ; "_"] ; ["-" ; "_"]);

json2 = JSONSetElement ( json ; path & ".time" ; (Hole ( SystemUhrzeitUTCMillisekunden )  -  JSONGetElement ( json ; path & ".time")) / 1000   ; JSONNumber );

json = JSONSetElement ( json ; path & ".time" ; Hole ( SystemUhrzeitUTCMillisekunden ) ; JSONNumber )

 ];

Wenn(Stop ; json2 ; json)

)

Diese Funktion TakeTime( Stop ) setzt bei Stop = 0 die Startzeit und bei Stop = 1 die Endzeit und errechnet so die Gesamtlaufzeit.

Im Startscript wird die Variable $$EXECUTETIMEJSON mit einem leeren JSON “{}” initialisiert.

Setzen von TakeTime zu Beginn (Stop = 0) und am Ende (Stop = 1) des Scriptes.

In den Teil-Scripten brauchen wir keine Initialisierung.

Das Ergebnis des Scriptes sieht dann so aus:

{
	"Main" : 
	{
		"time" : 6.051
	},
	"Part1" : 
	{
		"time" : 3.038
	},
	"Part2" : 
	{
		"time" : 2.014
	},
	"Part3" : 
	{
		"time" : 3.012
	}
}

Das Hauptscript lief 6,051 Sekunden, den Part1 = 1 Sekunde, Part2 = 2 Sekunden, Part3 = 3 Sekunden

Part1 lief 3,038 Sekunden, weil Part1 wiederum Part2 aufruft.

Somit kann man auch überprüfen, ob die Änderung einen merklichen Unterschied gebracht hat, oder wie ist das Verhältnis iPad zu Desktop oder Lokal zu Server.

 

  ScriptExecutionTime.fmp12 (188,0 KiB, 1.190 hits)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.