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 

Konstanten innerhalb oder außerhalb einer Schleifen einfügen



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!

05.09.2012, 11:22 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 11:22 von BEng Thomas.)
Beitrag #1

BEng Thomas Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2012

LabVIEW 2011
2012
DE_EN


Deutschland
Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Hallo LabVIEW Forum,

ich habe heute mal eine allgemeine Frage. Werden Konstanten die innerhalb einer Schleife sind, bei jedem Durchgang der Schleife neu initialisieren und kostet damit Rechenzeit (besonders dann, wenn die Schleiffe sehr oft durchlaufen). Oder ist es genau das gleich, als wenn die Konstanten außerhalb der Schleife sind und rein verbunden werden??? Im Anhang mal zwei Beispielbilder für das bessere Verständnis meiner Frage.


Danke für alle Antworten

Grüße

BEng Thomas


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.09.2012, 11:27
Beitrag #2

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Hallo,

Eine Konstante ist, wie der Name sagt, konstant. Sie wird beim Programmieren "initialisiert".

Wozu ist das wichtig?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 11:48 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 11:49 von NWOmason.)
Beitrag #3

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
(05.09.2012 11:22 )BEng Thomas schrieb:  Werden Konstanten die innerhalb einer Schleife sind, bei jedem Durchgang der Schleife neu initialisieren

Ist zwar speziell auf embedded gestrickt, gilt aber generell:
Optimizing LabVIEW Embedded Applications - Data Placement
http://www.ni.com/white-paper/3747/en#toc2

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 11:48
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.265
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Hallo,

in älteren LV-Versionen konnte es vorteilhaft sein, Konstanten außerhalb von Schleifen zu haben: Der Compiler hat das dann effizienter umgesetzt. Wie der Compiler in neueren LV-Versionen (ab 2010) das handhabt, kann ich nicht sagen (könnte man aber mit einem Speedtest prüfen)...

Zu deinem Beispiel: Ich würde komplett auf die FOR-Loop verzichten... Wink

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 12:24
Beitrag #5

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
In der Tat, auch in LV2010 (in der Entwicklungsumgebung) ist die Konstante außerhalb der Schleife schneller als in der Schleife. Also Konstante ist nicht gleich Konstante. Allerdings sind es nur ein paar Millisekunden bei 1 Million Schleifendurchläufen mit einer Arraykonstanten mit 10001 Element.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 16:17 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 16:19 von Lucki.)
Beitrag #6

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: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
(05.09.2012 12:24 )unicorn schrieb:  In der Tat, auch in LV2010 (in der Entwicklungsumgebung) ist die Konstante außerhalb der Schleife schneller als in der Schleife. Also Konstante ist nicht gleich Konstante.
Und in der Tat, in LV2011 ist das nicht mehr der so Big Grin:
   
Bei den letzen Versionsänderungen wurde nicht zuletzt überall an der Geschwindigkeit herumgefeilt. In dem geposteten Link zu NI steht als Datum 2009, ein Kommentar darin ist aber von 2006, also ist der Text mindestens so alt. Inzwischen hat sich vieles geändert, das muss nicht mehr alles so gelten. Fest steht auch, dass jeder Tunnel eine Kopie erzeugt, was eher gegen eine Platzierung außerhalb spricht.
Auf jeden Fall gilt: Grau ist alle Theorie, und praktisch kann man (- in den seltenen Fällen, in denen das überhaupt relevant ist) mit einem kleinem Test VI (s.oben) ganz schnell feststellen, was am schnellsten und am wenigsten Memory-intensiv ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.09.2012, 16:40 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 16:45 von jg.)
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.854
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Ich habe mal kürzlich einen Vortrag über den aktuellen LabVIEW-Compiler gehört.
Seit LabVIEW 2010 sollte es egal sein, wo die Konstanten platziert sind, der Compiler sollte das wegoptimieren.

Hierzu ein paar Links:
http://www.ni.com/white-paper/11472/en, bzw. hier auf deutsch: http://www.ni.com/white-paper/11472/de
http://zone.ni.com/devzone/cda/pub/p/id/1177

Gruß, Jens


@Lucki: Ich habe deinen Test ebenfalls nachgestellt, konnte aber bei mehrfacher Wiederholung und Umstellung der Reihenfolge keine signifikanten Unterschiede feststellen. Einmal ist die ein eine Implementation 1-2 ms schneller, dann die andere.
Besonders interessant wird dein Bsp, wenn du mal in deinem VI das Debugging abschaltest (also unter Execution "Allow Debugging" und "Error Handling"). Dann wird der LV-Compiler nämlich besonders schlau. Da du keine Ausgabe des berechneten Arrays hast und das auch nicht weiterverwendest, wird nämlich die komplette For-Loop wegoptimiert und die Durchlaufzeit ist 0 ms!!!

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 17:08
Beitrag #8

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Also, ich kann meinen Test von vorhin auf dem selben System auch nicht reproduzieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2012, 08:08
Beitrag #9

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: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
(05.09.2012 11:27 )unicorn schrieb:  Eine Konstante ist, wie der Name sagt, konstant.
D.h. sie ist in einem kompilierten Programm eine Specherstelle mit nicht veränderbarem Wert
Zitat: Sie wird beim Programmieren "initialisiert".
Das verstehe ich nicht: Eine Konstante dient u.a. dazu, andere Werte zu initialisieren. Wie hat man sich das vorzustellen, wenn eine Konstante sich selbst initialisiert?
(Bin kein gelernter Softie, die Frage ist ehrlich und nicht polemisch gemeint)

@Jens
Zitat:Besonders interessant wird dein Bsp, wenn du mal in deinem VI das Debugging abschaltest (also unter Execution "Allow Debugging" und "Error Handling")
Es erstaunt mich immer mal wieder, was Du so alles aus Deinem Köcher zauberst. Von Dir habe ich hier das Meiste gelernt. Habs mal so gemacht und den Test etwas verändert. Man sieht jetzt noch deutlicher, dass die beiden Varianten gleichwertig sind.
   


Angehängte Datei(en)
11.0 .vi  test.vi (Größe: 14,63 KB / Downloads: 136)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.09.2012, 11:05
Beitrag #10

BEng Thomas Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2012

LabVIEW 2011
2012
DE_EN


Deutschland
RE: Konstanten innerhalb oder außerhalb einer Schleifen einfügen
Hallo LabVIEW-Forum,

vielen Dank für die zahlreichen und schnellen Antworten. Ich habe meine Konstanten jetzt innerhalb der Schleifen gelassen und alles läuft perfekt und schnell genug.

Grüße

BEng Thomas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Programmteil außerhalb der Ursprungsansicht alex-one 6 2.898 09.11.2022 17:03
Letzter Beitrag: alex-one
  RTF, HTML und PDF innerhalb von VI anzeigen achim @ FZK 5 2.612 17.05.2021 08:36
Letzter Beitrag: Zelos
  Rechteck innerhalb eines Rechtecks oe-ms1 4 2.903 29.03.2018 11:52
Letzter Beitrag: oe-ms1
  Probleme seit einfügen einer For-Schleife JUON 7 4.434 14.02.2017 18:01
Letzter Beitrag: TR61
  Strikte Typ-Def. & autom. Aktualisierung deren Konstanten _techniker_ 2 3.273 17.08.2016 07:47
Letzter Beitrag: _techniker_
  Anzeigeproblem mit unterschiedliche Text-Ring-Konstanten in Case/Ereignisstruktur I3erry 3 3.402 28.08.2015 08:50
Letzter Beitrag: Lucki

Gehe zu: