08.12.2009, 22:20
Beitrag #1
|
|
|
08.12.2009, 22:23
Beitrag #2
|
eg
LVF-SeniorMod
Beiträge: 3.868
Registriert seit: Nov 2005
2016
2003
kA
66111
Deutschland
|
Typecast
Es macht keinen Unterschied. Nur wenn du es ignorierst und gar nicht berücksichtigst, kann es zu komischen Verhalten im Programm kommen.
|
|
|
08.12.2009, 22:38
Beitrag #3
|
|
|
08.12.2009, 23:04
(Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2009 23:04 von eg.)
Beitrag #4
|
eg
LVF-SeniorMod
Beiträge: 3.868
Registriert seit: Nov 2005
2016
2003
kA
66111
Deutschland
|
Typecast
Nur damit du explizit weisst, was im Programm passiert. Roter Punkt sagt z.B. nicht aus von welchem und in welchen Datentyp es castet.
|
|
|
09.12.2009, 08:49
(Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2009 08:51 von rolfk.)
Beitrag #5
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
Typecast
' schrieb:Guten Abend,
ich würde gerne wissen ob, ...
es einem Unterschied macht, wenn LV den Typecast macht -> roter Punkt
... oder ob man es selbst macht mit z.B. der Konvertierungspalette.
Bei einem LV Anwendertreffen hat man uns erzählt man soll die roten Punkte vermeiden, weil dann zusätzlich Speicher allokiert wird.
Kümmert Ihr euch da drumm oder lasst Ihr die Punkte Punkte sein?
Gruß dimitri
Zuerst mal es ist kein Typecast sondern eine Konversion, was der Coercion-Dot macht. Bei einem Typecast bleibt der Speicherinhalt soviel möglich dasselbe aber der (interpretierte) Wert der Daten wird anders. Bei einer Konversion ist es genau umgekehrt.
Und die Antworten bis jetzt waren meiner Meinung nach jetzt etwas zu undifferenziert. Bei Skalars macht es prinzipiel nichts aus, aber explizite Konversion hilft wie von Eugen angegeben oft der Deutlichkeit.
Bei Arrays kann es durchaus einen Unterschied machen ob man explizit oder implizit konvertiert. Nimm als Beispiel eine Loop in der auf irgendeine Weise Single Precision Werte generiert werden die durch Autoindexing in ein Array angelegt werden. Dieses Array wird danach mit einem Double Precision Arrayeingang verbunden. Ohne explizite Konversion wird der Konversionsdot am Arrayeingang gemacht. Es wird also zuerst ein Single Precision Array angelegt und dieses wird danach in ein Double Precision Array konvertiert. Mit expliziter Konversion innerhalb der Loop, wird ganz einfach ein einzelnes Double Precision Array angelegt. Die Konversion findet so oder so statt, aber LabVIEW muss ein Array weniger anlegen, was sowohl Speicher als auch Laufzeit spart.
|
|
|
09.12.2009, 09:07
Beitrag #6
|
unicorn
LVF-Freak
Beiträge: 680
Registriert seit: Jul 2009
8.6.1, 2010 - 2012
1994
EN
10xxx
Deutschland
|
Typecast
Von welchem Typ in welchen umgewandelt wird, ist aber klar, wenn der Eingang nur einen bestimmten Typ erwartet.
Ich mache mir nicht allzuviele Sorgen um die roten Punkte. Wenn es eindeutig ist, wie umgewandelt wird, lasse ich sie stehen. Ich vermeide Sie, wenn der rote Punkt verschwindet, indem ich z. B. den Datentyp einer Drahtes (Variable) bzw. eines Eingabe- oder Anzeigeelements Controls ändern kann. Bei der Umwandlung von DBL nach Integer sollte man nachdenken, ob man nicht aufrunden oder abrunden möchte.
Manchmal kann der Rote Punkt auch effizienter sein als eine explizite Umwandlung: guckst Du hier.
Übrigens ein roter Punkt ist kein Type Cast im eigentlichen Sinne. Beim Type Cast wird die binäre Darstellung als ein andere Typ intepretiert. Ein DBL hat 8 Byte und kann in ein Array von 4 I16 oder 8 Zeichen gecastet werden. Manchmal wird beim roten Punkt ein Type Cast durchgeführt (z. B. U8 -> I8) hingegen ist SGL -> I64 eine Umwandlung der Zahl mit Rundung.
|
|
|
09.12.2009, 09:55
Beitrag #7
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Typecast
Seid bedankt.
' schrieb:Manchmal kann der Rote Punkt auch effizienter sein als eine explizite Umwandlung: guckst Du hier.
Da wird aber nicht erklärt wann der 'coercion dot' effizienter ist, oder?
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
09.12.2009, 10:36
Beitrag #8
|
|
|
09.12.2009, 10:46
Beitrag #9
|
|
|
| |