Hallo allerseits,
Eine meiner Aufgaben ist die Zuverlässigkeitsanalyse, bei der ich Fit Life by X verwende.
Dabei habe ich zwei JSL-Skripte, die ausgeben genau die gleichen Ergebnisse aber haben verschiedene Codierungsansätze .
Der erste verwendet einfach die Kaskade des Codes zusammen. Der Pseudocode sieht in etwa so aus:
// Plot Fit Life by X #1
Fit Life by X(...);
// Plot Fit Life by X #2
Fit Life by X(...);
// Plot Fit Life by X #3
Fit Life by X(...);
// And so on
Die zweite hat eine einzige Funktion, die wir mit verschiedenen X-, Y- und Zensurspalten wiederholt nennen. Der Pseudocode sieht in etwa so aus:
// Function that contains Fit Life by X
reli_analysis = function(
{input parameters},
{local variables},
Fit Life by X(...);
);
// Call the above function multiple times
reli_analysis(input parameters set #1);
reli_analysis(input parameters set #2);
reli_analysis(input parameters set #3);
// And so on
Was ich erlebt habe, ist, dass der zweite Code viel schneller ist als der erste, in der Größenordnung von fast 10 mal schneller. (Mein echter Code und meine Daten haben eine Wanduhrzeit von ~17 Sekunden von Code #2 gegenüber ~170 Sekunden von Code #1)
Ich habe folgende drei Fragen:
1. Warum ist das Aufrufen der Funktion viel schneller als das explizite Ausschreiben aller Codes?
2. Was sind andere Praktiken/Tipps, die ich im Allgemeinen tun sollte, um sicherzustellen, dass mein Code die effizienteste Zeit- und/oder Platzkomplexität aufweist?
3. Ich bin mir nicht sicher, ob JSL eingebaute Timing-Funktionen wie CPU-Zeit und Wanduhrzeit hat? Ich habe die Codeausführungen mit der Funktion today() zeitlich festgelegt. Aber es erfordert eine Menge manueller Codierung. Außerdem unterscheiden sich die so errechneten Laufzeiten immer etwas, je nachdem, ob noch andere Aufgaben ausgeführt werden.
Vielen Dank für deine Hilfe.
JMP-Version: 17.0