Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum sollte ich in C# statt einem Byte oder Short int verwenden?

In Bezug auf die Leistung ist ein int in fast allen Fällen schneller. Die CPU ist darauf ausgelegt, effizient mit 32-Bit-Werten zu arbeiten.

Kürzere Werte sind kompliziert zu handhaben. Um beispielsweise ein einzelnes Byte zu lesen, muss die CPU den 32-Bit-Block lesen, der es enthält, und dann die oberen 24 Bits ausmaskieren.

Um ein Byte zu schreiben, muss es den 32-Bit-Zielblock lesen, die unteren 8 Bits mit dem gewünschten Bytewert überschreiben und den gesamten 32-Bit-Block wieder zurückschreiben.

Platzmäßig sparen Sie natürlich ein paar Bytes, indem Sie kleinere Datentypen verwenden. Wenn Sie also eine Tabelle mit ein paar Millionen Zeilen erstellen, sind kürzere Datentypen möglicherweise eine Überlegung wert. (Und das könnte ein guter Grund sein, warum Sie kleinere Datentypen in Ihrer Datenbank verwenden sollten)

Und in Bezug auf die Korrektheit läuft ein Int nicht so leicht über. Was, wenn Sie denken Ihr Wert wird in ein Byte passen, und irgendwann in der Zukunft bedeutet eine harmlos aussehende Änderung am Code, dass größere Werte darin gespeichert werden?

Dies sind einige der Gründe, warum int Ihr Standarddatentyp für alle integralen Daten sein sollte. Verwenden Sie byte nur, wenn Sie tatsächlich Maschinenbytes speichern möchten. Verwenden Sie shorts nur, wenn Sie es mit einem Dateiformat oder Protokoll oder ähnlichem zu tun haben, das tatsächlich 16-Bit-Ganzzahlwerte angibt. Wenn Sie es nur mit ganzen Zahlen zu tun haben, machen Sie sie zu ints.