Domanda

Così, dopo la ricerca di motori molto Ho costruito un quadro 2d per l'iPhone. Come sapete il mondo dell'architettura del motore è vasta così ho cercato di applicare le migliori pratiche per quanto possibile.

ho usato:

uint_fast8_t mId;

Se guardo la definizione di uint_fast8_t trovo:

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

E Sto usando questi tipi in tutto il mio codice - La mia domanda è: esiste un miglioramento delle prestazioni per l'utilizzo di questi tipi? E che cosa esattamente sta succedendo dietro le quinte? Oltre al fatto evidente che questo è corretto tipo di dati (unsigned 8 bit integer) per i dati, è la pena di avere questa disseminata in tutto il mio codice?

Si tratta di un'ottimizzazione inutile che il compilatore probabilmente prenderà cura di comunque?

Grazie.

Modifica: No risposte / risposte, quindi sto mettendo una taglia su questo

È stato utile?

Soluzione

tipi interi "veloci" sono definiti per essere il tipo intero veloce disponibile con almeno la quantità di bit richiesto (in questo caso 8).

Se la piattaforma definisce uint_fast8_t come uint8_t allora non ci sarà assolutamente nessuna differenza in termini di velocità.

Il motivo è che ci possono essere le architetture che sono più lenti quando non si utilizza la lunghezza della parola nativa. Per esempio. Sono riuscito a trovare un riferimento dove per processori Alpha uint_fast_8_t è stato definito come "unsigned int".

Altri suggerimenti

Un uint_fast8_t è il numero intero più veloce garantita almeno 8 bits. A seconda della piattaforma potrebbe essere 8 o 16 o 32 bit di larghezza.

Si mangia curata dal compilatore stesso, effettivamente rendere il vostro programma di eseguire più velocemente

Ecco alcune risorse che ho trovato, si potrebbe già aver visto loro http://embeddedgurus.com/stack-overflow/2008/06/efficient-c-tips-1-choosing-the-correct-integer-size/

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

in mingw64 è stato detto in questo modo

/*  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;

quindi penso che è ancora consiglia di utilizzare int size nativo ad eccezione di grandi array

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top