INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Optimierung laufendes Programm (Array auslesen...)



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.08.2012, 14:38 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2012 10:45 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Optimierung laufendes Programm (Array auslesen...)
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
   

11.0 .vi  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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: Optimierung laufendes Programm (Array auslesen...) - Lucki - 25.08.2012 14:38

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Daten auslesen und in Array schreiben Daniel90 3 6.525 29.12.2015 18:01
Letzter Beitrag: Daniel90
  2D Array zeitlich auslesen. Bexx 8 6.624 15.06.2011 10:14
Letzter Beitrag: Bexx
  Aus einem Array jeden 2. Wert auslesen TimoRT 6 8.176 08.10.2007 16:24
Letzter Beitrag: Lucki
  Optimierung / curve-fitting anton.lindner 5 9.299 20.02.2005 16:53
Letzter Beitrag: anton.lindner

Gehe zu: