Frage

So, nachdem Motoren viel forschen Ich habe für das iPhone einen 2d Rahmen baut. Wie Sie die Welt der Motorarchitektur wissen ist groß, damit ich am besten Praktiken so weit wie möglich anzuwenden versucht haben.

Ich habe mit:

uint_fast8_t mId;

Wenn ich die Definition von uint_fast8_t nachschlagen finde ich:

/* 7.18.1.3 Fastest-width integer types */
...
typedef uint8_t          uint_fast8_t;

Und ich habe diese Art in meinem Code - Meine Frage ist, gibt es einen Leistungsvorteil dieser Art zu verwenden? Und was genau hinter den Kulissen? Neben der offensichtlichen Tatsache, dass diese richtigen Datentyp (unsigned 8-Bit-Integer) für die Daten vorhanden sind, lohnt es sich, diese in meinem Code gespickt zu haben?

Ist dies eine unnötige Optimierung, dass der Compiler wahrscheinlich kümmern sowieso nehmen würde?

Danke.

Edit: Keine Antworten / Antworten, also bin ich ein Kopfgeld auf diese setzen

War es hilfreich?

Lösung

die "schnelle" Integer-Typen definiert sind, die schnellste Integer-Typ verfügbar mit mindestens die Menge an Bits, die erforderlich sein (in diesem Fall 8).

Wenn Ihre Plattform definiert uint_fast8_t als uint8_t dann wird es absolut kein Unterschied in der Geschwindigkeit.

Der Grund dafür ist, dass es Architekturen sein, die langsamer sind, wenn sie nicht ihre Mutterwortlänge verwendet wird. Z.B. Ich konnte eine Referenz finden, wo für Alpha-Prozessoren uint_fast_8_t definiert wurde „unsigned int“ zu sein.

Andere Tipps

Ein uint_fast8_t ist die schnellste ganze Zahl garantiert mit mindestens 8 Bits. Abhängig von Ihrer Plattform könnte es sein, 8 oder 16 oder 32 Bit breit.

Es ist nicht betreut vom Compiler selbst, ist es in der Tat macht Ihr Programm schneller ausgeführt

Hier sind einige Ressourcen, die ich gefunden, könnte man sich schon gesehen hat http://embeddedgurus.com/stack-overflow/2008/06/efficient-c-tips-1-choosing-the-correct-integer-size/

http: //www.mail-archive .com / avr-gcc-Liste @ nongnu.org / msg03149.html

in mingw64 es so gesagt wurde,

/*  7.18.1.3  Fastest minimum-width integer types
 *  Not actually guaranteed to be fastest for all purposes <---------------------
 *  Here we use the exact-width types for 8 and 16-bit ints.
 */
typedef signed char int_fast8_t;
typedef unsigned char uint_fast8_t;
typedef short  int_fast16_t;
typedef unsigned short  uint_fast16_t;
typedef int  int_fast32_t;
typedef unsigned  int  uint_fast32_t;
__MINGW_EXTENSION typedef long long  int_fast64_t;
__MINGW_EXTENSION typedef unsigned long long   uint_fast64_t;

so denke ich, es ist immer noch außer für große Arrays zu verwenden nativen int size empfohlen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top