26.05.2010, 07:12
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 07:13 von stromflo.)
|
stromflo
LVF-Gelegenheitsschreiber
Beiträge: 125
Registriert seit: Apr 2010
8.2
2010
DE
Deutschland
|
Array Indizieren - Teilarray ersetzen durch Kommawerte
Hallo Seba,
mich würde noch interessieren wo ich das ramp vi finde, welches du in dem Vergleichpost bei Variante 1 gepostet hast.
Will ja auch für die Zukunft lernen, wer weiß wie viele Anwendungen ich noch in LabVIEW schreib
Und noch mal vielen Dank! Man muss schon sagen ein super Forum ist das hier!
Gruß Flo
|
|
|
26.05.2010, 09:19
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 09:26 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
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.
|
|
|
26.05.2010, 09:51
|
stromflo
LVF-Gelegenheitsschreiber
Beiträge: 125
Registriert seit: Apr 2010
8.2
2010
DE
Deutschland
|
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.)
|
Kiesch
LVF-Stammgast
Beiträge: 412
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
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.)
*Zitat: IchSelbst*
|
|
|
26.05.2010, 15:19
|
jak888
LVF-Gelegenheitsschreiber
Beiträge: 133
Registriert seit: Apr 2010
2010
2010
en
97447
Deutschland
|
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."
|
|
|
26.05.2010, 15:21
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
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.
|
|
|
| |