Ottimizzare C++/Ottimizzazione del codice C++: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 611:
D'altra parte, la conversione da signed a unsigned non costa niente, in quanto è solo una reinterpretazione degli stessi bit.
Pertanto, se s è un intero ''signed'' che sai essere sicuramente positivo o nullo, ne velocizzi la divisione se usi le seguenti espressioni equivalenti: ''unsigned(s) / c'' e ''unsigned(s) % c''.
 
=== Processori con bus dati ridotto ===
 
'''Se il processore target ha il bus dati più piccolo dei registri interni, usa i tipi interi più piccoli possibili per tutte le variabili eccetto i parametri di funzione e le variabili locali.'''
 
I tipi <code>int</code> e <code>unsigned int</code> sono quelli più efficienti una volta caricati nei registri del processore.
Tuttavia, su alcune famiglie di processori, potrebbero non essere i più efficienti da accedere in memoria.
 
Per esempio, esistono processori che hanno registri da 16 bit, ma bus dati da 8 bit.
Per i processori che hanno il bus dati più piccolo dei registri interni, solitamente i tipi <code>int</code> e <code>unsigned int</code> corrispondono alla dimensione dei registri interni.
 
Per tali sistemi, la lettura e la scrittura in memoria di un oggetto di tipo <code>int</code> richiedono un tempo più grande di quello che sarebbe richiesto da un tipo intero più piccolo.
 
I parametri di funzione e le variabili locali sono solitamente allocate in registri, e quindi non richiedono accessi in memoria.
 
[[Categoria:Ottimizzare C++|Ottimizzazione]]