Array Indizieren - Teilarray ersetzen durch Kommawerte
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!
26.05.2010, 07:12 (Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 07:13 von stromflo.)
Array Indizieren - Teilarray ersetzen durch Kommawerte
' schrieb:Für meine Zwecke ist die Variante 2 aber wohl außreichend, da das Array ja nur am Teststart indiziert wird und dann die Werte ersetzt werden.
Du schreibst nirgens, dass du eine Rampe im erstellten Array benötigst.
Du möchtest doch nur "schnell" ein Array erstellen, dazu genügt die Funktion "Array initialisieren".
Oder nicht ?
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
26.05.2010, 09:19 (Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 09:26 von Lucki.)
Array Indizieren - Teilarray ersetzen durch Kommawerte
Also ich gestehe, daß ich einen Tick habe: ich scheue Konvertierungen wie der Teufel das Weihwasser. Deshalb benutze ich in for-Schleifen in der Regel nicht den index i, wenn ich einen dbl-Array erzeugen und/oder berechnen muß, sondern mache es eher so:
Beim Ramp-Generator (- den ich in genau diesem Beispiel natürlich auch bevorzugen würde -) ist noch zu bemerken, daß er in der Basisversion von LV nicht enthalten ist.
Array Indizieren - Teilarray ersetzen durch Kommawerte
Danke!
Gibt ja wirklich enorm viele Möglichkeiten.
Zitat:Du möchtest doch nur "schnell" ein Array erstellen, dazu genügt die Funktion "Array initialisieren".
Am Anfang hatte ich das Problem, dass ich das Array mit build Array in der Testschleife erstellt hab. Da stellte ich fest, dass die Performance darunter richtig leidet.......
Darauf hin hab ich mir dann gedacht ich initialisiere es lieber vor dem Test und ersetze die Werte, dann nur noch während dem Testlauf. Von ca. 95% CPU Auslastung blieben durch Array ersetzen nur noch ca. 10% übrig. Die Array Build Funktion verschlingt quasi ein haufen Performance.
Also passt natürlich auch diese Variante ohne Probleme.
Gruß Flo
26.05.2010, 14:32 (Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 14:32 von Kiesch.)
Array Indizieren - Teilarray ersetzen durch Kommawerte
@Typenkonvertierung in und außerhalb der Schleife
zeigt ja offenbar ein sehr nachvollziehbares Verhalten. Für große Arrays ist der Cast nach der Schleife schneller (ein komplexerer Cast der erst bei vielen Elementen Zeit einspart), während für wenige Elemente der Cast in der Schleife schneller ist (wenige Elemente ergo begrenzt viele Aufrufe dieses mit weniger "overhead" belasteten Casts). Wobei natürlich wenige Elemente hier 10k und viele 100k entspricht. Es wäre also anzunehmen, dass irgendwo dazwischen beide Varianten gleich schnell sind.
P.S: Ist die Variante ohne typecast eigentlich schneller? Oder wird der Vorteil durch die Inkrement Operation wieder aufgefressen? Die könnte man ja sogar weglassen wenn es nur ums reine Array initialisieren geht und hätte vermutlich die Variante mit dem geringsten Zeitaufwand.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
Array Indizieren - Teilarray ersetzen durch Kommawerte
Also ich hab grad auch nochmal ein kleines Programm zusammengesteckt...
wie es aussieht hängt das ein bisschen von der externen Belastung des Rechners ab, denn, wenn ich die VI mehrfach starte und die 2 Möglichkeiten gegeneinander laufen lasse gewinnt mal die eine, mal die andere möglichkeit...
"Good judgement comes from experience, experience comes from bad judgement."
Array Indizieren - Teilarray ersetzen durch Kommawerte
' schrieb:P.S: Ist die Variante ohne typecast eigentlich schneller? Oder wird der Vorteil durch die Inkrement Operation wieder aufgefressen? Die könnte man ja sogar weglassen wenn es nur ums reine Array initialisieren geht und hätte vermutlich die Variante mit dem geringsten Zeitaufwand.
"Typecast" ist eine sehr schnelle Oparation, weil dort mit den Daten überhaupt nichts gemacht wird, außer daß ihnen eine andere Typbeschreibung untergeschoben wird. - Aber das ist nicht das, was Du meinst, Du meinst "Konvertierung", und dort vermute ich eine eher umständliche Operation.
Increment und Dekrement sind Operationen, für die es bei allen Prozessoren eigene sehr schnelle Maschinenbefehle gibt. Ich gehe mal davon aus, daß LV diese Befehle direkt nutzt und daß die Operationen also schneller sind als eine normale Addition. - Bei Konvertierung von LV9 in frühere Versionen kommt übrigens immer ein Meldung, wenn das VI Inkrement/Dekrement-Funktionen enthält. Ich vermute, daß in LV9 diese Funktionen nochmals optimiert wurden, so daß sie vom Zeitverhalten her nicht mehr identisch sind mit den gleichen Funktionen in früheren Versionen.