Gibt es irgendeinen Grund, in C # byte / short etc .. zu verwenden?

7

Über den Int-Typ?

Viel Code verwendet entweder int mit double / floats.

Ich weiß, dass es .NET-Mobilversionen gibt, also kommt Byte / Short auf ihre Kosten, aber für Desktop-Apps gibt es keinen Sinn?

Als ich mit C ++ gearbeitet habe (Programmierung von Spielen), war ich mir sehr bewusst, welche Datentypen ich verwendete, obwohl ich dieses Gefühl in C # / Java-Arbeit nicht habe.

Wäre es von Vorteil, wenn ich ein Byte benutze, wenn ich weiß, dass meine Schleife niemals über die Grenzen des Bytes hinausgehen wird?

    
Finglas 25.05.2009, 10:35
quelle

5 Antworten

10

Ein einzelnes byte im Vergleich zu einem long macht keinen großen Unterschied im Hinblick auf die Speicherkapazität, aber wenn Sie mit großen Arrays beginnen, werden diese 7 zusätzlichen Bytes einen großen Unterschied ausmachen.

Außerdem helfen Datentypen dabei, die Absicht der Entwickler besser zu kommunizieren: Wenn Sie auf byte length; treffen, wissen Sie sicher, dass length der Bereich von byte ist.

    
Anton Gogolev 25.05.2009, 10:38
quelle
8

Was ich denke, diese Frage ist, dass vor zehn oder mehr Jahren es üblich war, darüber nachzudenken, welche Werte Ihre Variablen speichern sollten und ob Sie zum Beispiel einen Prozentsatz (0..100) speichern würden Verwenden Sie ein Byte (-128 bis 127 mit Vorzeichen oder 0 bis 255 ohne Vorzeichen), da es für den Job ausreichend groß und daher weniger "verschwenderisch" ist.

Heutzutage sind solche Maßnahmen jedoch unnötig. Speicher ist normalerweise nicht so teuer, und wenn es wäre, würden Sie wahrscheinlich von modernen Computern besiegt werden, die Dinge auf 32-Bit-Wortgrenzen ausrichten (wenn nicht 64).

Wenn Sie nicht Arrays von Tausenden dieser Dinge speichern, sind diese Arten von Mikrooptimierungen (jetzt) ​​eine irrelevante Ablenkung.

Ehrlich gesagt kann ich mich nicht daran erinnern, wann ich zum letzten Mal ein Byte für etwas anderes als Rohdaten verwendet habe und ich kann mir nicht vorstellen, wann ich zum letzten Mal eine Abkürzung für, na ja, alles benutzt habe.

    
cletus 25.05.2009 10:41
quelle
4

Beim Verwenden von Datentypen, die kleiner als die native Wortgröße der CPU sind, tritt ein geringer Leistungsverlust auf. Wenn eine CPU zwei Bytes zusammenfügen muss, lädt sie sie in (32-Bit-) wortgroße Register, fügt sie hinzu, passt sie an (schneidet die drei höchstwertigen Bytes ab, berechnet Übertrag / Überlauf) und speichert sie in einem Byte / p>

Das ist eine Menge Arbeit. Wenn Sie eine Variable in einer Schleife verwenden wollen, machen Sie sie nicht kleiner als das native Wort der CPU.

Diese Datentypen sind vorhanden, damit Code mit Strukturen umgehen kann, die sie enthalten, aufgrund von Größenbeschränkungen oder wegen veralteter APIs oder was nicht.

    
Dave Van den Eynde 25.05.2009 10:40
quelle
3

viele Gründe für die Verwendung von byte - alles, was rohe Binärströme (Bilder, Dateien, Serialisierungscode usw.) verarbeitet, muss in byte[] buffers.

Ich würde byte nicht nur als Zähler verwenden, obwohl die CPU int effizienter verarbeiten kann.

Mit short ... Nun, wenn Sie ein Array von ihnen haben, könnte es ziemlich viel Speicherplatz sparen, aber im Allgemeinen würde ich nur int verwenden.

    
Marc Gravell 25.05.2009 10:37
quelle
3

Dies ist ein Fall von "Verwenden Sie das richtige Werkzeug für den Job". Wenn Sie mit etwas arbeiten, das ein Byte darstellt, verwenden Sie den Datentyp byte . Viel Code, der beispielsweise Byte-Streams einbezieht, erfordert die Verwendung von Byte-Arrays. Umgekehrt, wenn Sie nur mit beliebigen Ganzzahlen arbeiten, verwenden Sie int oder long , wenn sie größer sind als ein int .

    
John Feminella 25.05.2009 10:36
quelle

Tags und Links