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

Contenuto cancellato Contenuto aggiunto
Riportate modifiche da en.wikibooks
Gian BOT (discussione | contributi)
m Bot: sostituisce source con syntaxhighlight
 
Riga 34:
Per esempio, invece della seguente struttura:
 
<sourcesyntaxhighlight lang=cpp>
struct {
bool b;
unsigned short ui1, ui2, ui3; // range: [0, 1000]
};
</syntaxhighlight>
</source>
 
che occupa 8 byte, puoi definire la seguente struttura:
 
<sourcesyntaxhighlight lang=cpp>
struct {
unsigned b: 1;
unsigned ui1: 10, ui2: 10, ui3: 10; // range: [0, 1000]
};
</syntaxhighlight>
</source>
 
che occupa solamente (1 + 10 + 10 + 10 = 31 bit, 31 <= 32) 4 byte.
Riga 54:
Per fare un altro esempio, invece del seguente array:
 
<sourcesyntaxhighlight lang=cpp>
unsigned char a[5]; // range: [-20, +20]
</syntaxhighlight>
</source>
 
che occupa 5 byte, puoi definire la seguente struttura:
 
<sourcesyntaxhighlight lang=cpp>
struct {
signed a1: 6, a2: 6, a3: 6, a4: 6, a5: 6; // range: [-20, +20]
};
</syntaxhighlight>
</source>
 
che occupa solamente (6 + 6 + 6 + 6 + 6 = 30 bits, 30 <= 32) 4 bytes.
Riga 77:
Supponiamo di aver scritto il seguente codice:
 
<sourcesyntaxhighlight lang=cpp>
template <typename T>
class C {
Riga 86:
T x_;
};
</syntaxhighlight>
</source>
 
Può convenire sostituire tale codice con il seguente:
 
<sourcesyntaxhighlight lang=cpp>
template <typename T>
class C {
Riga 101:
 
void f_(int i) { body(); return i; }
</syntaxhighlight>
</source>
 
Ad ogni istanziazione di un template di classe che fa uso di una funzione di quel template di classe, tutto il codice di quella funzione viene istanziato.