Kommentare:
1.
Zitat:Noch schlimmer ist dabei die Verwendung lokaler Variabler.
Das hat man zwar schon 1000 mal gelesen, und zwar in allen Foren, weniger bei NI selbst, entpricht aber weder meinen eigenen Erahrungen, noch dem, wie NI selbst in seinen eigenen Beispielen mit lokalen Variablen umgeht. Aber Du kanst ja die lokalen Variablen versuchshalber mal aus der Schleife rauslegen, damit sie nicht alle 125000 mal aufgerufewn werden müssen. Damit wird zwar noch eine Kopie mehr angelegt, aber das kostet kaum Zeit, eher Platz. Und berichte mal, ob das was bringt, interessiert mich auch.
Edit: Habe mir die VI nlch mal angesehen, Du hast es ja richtig gemachr. Die neuen Elemente im Array werden hinten angehängt. Mein Begründung, warum es sulange Dauert, ist hinfällig.
2.
Zitat:Weitere Optimierungsmöglichkeit: Auch Build-Array ist eine langsame Funktion, da bei jedem Aufruf der Speichermanager das bestehende Array vergrößern muss.
Klingt plausibel, aber LV scheint damit bei neueren Versionen keinerlei Probleme mehr zu haben.
Aber: Es ist ein geradezu gigantischer Zeitunterschied, ob bei Build Array ein neues Element am Anfang oder am Ende des Array hinzugfügt wird. Geschieht es am Anfang, dann werden bei jedem Hinzufügen alle alten Arrayelemente umgeschichtet, das kostet enorm Zeit - und genau hier liegt bei Dir der Hase im Pfeffer. Das Hinzufügen am Ende kostet kaum Zeit, wenn man mal davon absieht, dass vielleicht bei jedem 10000stem Element mal wieder etwas neuer Speicher herbeigeschafft werden muss.
Beispiel: in einem Array mit 125000 Zufallszahlen 0..1 werden diejemigen aussortiert, deren Wert größer als 0.5 ist.
Deine Methode: gefundene Werte werden am Index Null hinzugefügt
Dauer = 1600 ms
Gefundene Werte werden am Ende hinzugefügt, und anschließend wird der Array umgekehrt, damit die Ergebnisse identisch sind:
Dauer = 10 ms
Ement an Array.vi (Größe: 13,51 KB / Downloads: 197)
Edit: Habe mir Dein VI noch mal angesehen. Du hast es ja richitig gemacht, die neuen Elemente werden am Array hinten angehängt, nicht im Index 0. Die Begründung, warum es bei Dir so lange dauert, ist somit hinfällig