2012-07-09 5 views
6

ho notato che la mia applicazione nds funziona un po 'più veloce quando sostituisco tutte le istanze di byte con numeri interi. tutti gli esempi online mettono le istanze u8/u16 ogni volta che è possibile. c'è una ragione specifica per cui questo è il caso?Perché gli interi si elaborano più velocemente dei byte su NDS?

+0

Puoi dare un esempio di codice specifico? Sospetto che tu stia vedendo esempi dichiarare variabili a 8/16 bit nelle strutture, e tu invece le usi come persone del posto. –

risposta

16

Il processore principale utilizzato da Nintendo DS è ARM9, un processore a 32 bit.

Riferimento: http://en.wikipedia.org/wiki/ARM9

                                       

In genere, la CPU eseguirà operazioni in word sizes, in questo caso, 32 bit. A seconda delle operazioni, dover convertire i byte in numeri interi o viceversa potrebbe causare uno sforzo supplementare sul processore. Questa conversione e la potenziale mancanza di istruzioni per valori diversi da numeri interi a 32 bit potrebbero causare la mancanza di velocità.

7

Complementare a quello che ha detto Daniel Li, l'accesso alla memoria su piattaforme ARM deve essere allineato alla parola, vale a dire che i recuperi di memoria devono essere multipli di 32 bit. Il recupero di una variabile di byte dalla memoria implica il recupero dell'intera parola contenente il byte pertinente e l'esecuzione delle operazioni bit-bit necessarie per adattarlo ai bit meno significativi del registro del processore.

Queste istruzioni extra vengono automaticamente emesse dal compilatore, dato che conosce l'allineamento effettivo delle variabili.

Problemi correlati