Entwickler-Ecke

C# - Die Sprache - Performance frage: C# Alias oder .net Laufzeittyp ?


Silentf - Fr 11.07.08 11:18
Titel: Performance frage: C# Alias oder .net Laufzeittyp ?
Hallo zusammen :)

Ist es sinnvoller bzw. "schneller" wenn man Variablen mit .net Laufzeittypen deklariert oder mit dem c# Alias ?
Ein Unterschied wird sicher da sein, denk ich... Jedoch minimal da es ja ähnlich wie ein Pointer funktioniert oda ?
Rentiert es sich bei großen Anwendungen oder eher nicht.

Danke euch schonmal !

Gruß Silent


JüTho - Fr 11.07.08 11:43

Meinst Du den Vergleich zwischen Int32 und int? Vergiss das Grübeln und benutze das, was Dir lieber ist. (Es gibt so viele Sachen, mit denen man sich ernsthaft befassen muss; da sind überflüssige Probleme wirklich überflüssig.) Es mag zwar Situationen mit wirklichen Unterschieden geben; aber da der Compiler sowieso das gleiche erzeugen dürfte, spielt das in der Praxis keine Rolle. Jürgen


Silentf - Fr 11.07.08 12:02

Hallo !

Ja richtig, vieleicht könnte man das testen wenn man ne rechen und zeitaufwendige Rechnung erstellt, die einmal mit int32 und einmal mit int Variablen rechnet...

Mal zuhause probieren, kam mir nur in Sinn als ich das Openbook am lesen war.

Trozdem Danke !


Kha - Fr 11.07.08 14:29

"Alias" sagt doch schon alles: Nach dem Kompilieren ist er ganz einfach verschwunden. Es ist wirklich nicht anderes als persönlicher Geschmack. Es gibt einige gute Gründe gegen die Aliase ("Ist double etwa kein float?"), aber ich mag einfach das Syntax-Highlighting :mrgreen: .


Greenberet - Mo 14.07.08 18:23

user profile iconKhabarakh hat folgendes geschrieben:
"Alias" sagt doch schon alles: Nach dem Kompilieren ist er ganz einfach verschwunden. Es ist wirklich nicht anderes als persönlicher Geschmack. Es gibt einige gute Gründe gegen die Aliase ("Ist double etwa kein float?"), aber ich mag einfach das Syntax-Highlighting :mrgreen: .

eig. kann ich dir da nur zustimmen, nur das mit "ist double etwa kein float?" stimmt nicht ganz
der name vom datentyp double kommt eig. von "double float" weil er doppelt so groß ist (64 Bit statt 32 ) wodurch die präzission und die max und min grenzen erhöht werden.

lg
green


Christian S. - Mo 14.07.08 18:28

user profile iconGreenberet hat folgendes geschrieben:
nur das mit "ist double etwa kein float?" stimmt nicht ganz

Wie kann an einer Frage etwas nicht stimmen? :gruebel:

user profile iconGreenberet hat folgendes geschrieben:
der name vom datentyp double kommt eig. von "double float" weil er doppelt so groß ist (64 Bit statt 32 ) wodurch die präzission und die max und min grenzen erhöht werden.
Ich glaube, das weiß Sebastian. :zwinker: Der "Witz" bei der Frage ist, dass double halt auch ein floating point type ist.


Xardas008 - So 20.07.08 16:37

Hi,

ich kann mich den anderen nur Anschließen. Es macht keinen Unterschied, ob du nun Int32 oder int oder Int oder sonstwas schreibst, sofern es vom Compiler nicht beanstandet wird.

Im Hintergrund macht der Compiler das gleiche daraus.

Der einzige wesentliche Unterschied ist, ob dein Programm letztlich CLS-Konform ist oder nicht, sprich ob du mit VB.NET, C# oder gar C++.NET dein Programm entwickelt hast.

Beispiel:

Du hast eine Klassenbibliothek geschrieben und benutzt immer int, double etc.
Willst du diese in einer anderen Programmiersprache einsetzen, funktioniert dies nicht, da diese dort nicht definiert sind.
Nimmst du dagegen Int32, Int64 etc. dann ist diese CLS-Konform und beide Sprachen dürften sich verstehen.
Das ist der einzige Grund wieso es diese Unterschiede überhaupt gibt.

Letzentlich bleibt es deine Entscheidung, nach welchem Stil du entwickelst, deine Programme dürften so oder so laufen und an Performance dürfte man keinen Unterschied merken.

Gruß

Xardas008


Christian S. - So 20.07.08 16:42

Die anderen Sprachen sehen doch nur das Kompilat, und da sind ja dann die Aliase schon verschwunden. Zeig mal bitte eine Lib, die auf Grund der Verwendung eines Alias nicht in einer anderen Sprache funktioniert :-)


Kha - So 20.07.08 21:06

user profile iconXardas008 hat folgendes geschrieben:
Das ist der einzige Grund wieso es diese Unterschiede überhaupt gibt.
Das wäre doch wohl ein ziemlich dämlicher Grund ;) . Die Aliase existieren rein wegen C-Verwandtschaft und allgemeiner Schreibfaulheit von Programmierern.
Kann es sein, dass du das mit den Unsigned-Typen verwechselt hast? Von denen ist nämlich nur Byte CLS-Compliant.


Talla - Di 29.07.08 19:08

Hallo,

die bisher genannten Theorien warum es diese Aliase gibt sind recht phantasievoll :) , aber keine trifft imo zu.
Das hier [http://board.gulli.com/thread/1163039-c-unterschied-von-string-und-string/#6] triffts wohl eher.


Kha - Di 29.07.08 21:24

user profile iconTalla hat folgendes geschrieben:
aber keine trifft imo zu.
Und solange wir von Hejlsberg selbst kein Zitat haben[meta]eine Mail an Eric Lippert würde es wahrscheinlich auch tun[/meta], halte ich mein "imo" dagegen :mrgreen: . Ich glaube wirklich nicht, dass solche Plattform-Unabhängigkeit bei der Entwicklung von Java oder C# eine Rolle gespielt hat. Aber es ist schon eine verlockende Vorstellung, dass 1 Prozent meines Codes unabhängig vom Framework ist :zwinker: .