Oggi mi sono imbattuto in una situazione in cui avevo bisogno di decidere se un'intera struttura che consiste di circa 40 elementi è zero - significa che ciascuno degli elementi è zero.
Quando si pensa come rendere più veloce ed efficiente possibile, ho pensato di 3 modi diversi per farlo:Modo preferito per confrontare una struttura a zero
- confrontare ogni elemento a zero, con conseguente 40 se dichiarazioni.
- allocando una struttura simile che è già azzerata e
memcmp
con la struttura. - avvolgere la struttura in un'unione con un tipo abbastanza grande da coprire tutto.
per esempio
typedef union {
struct {
uint8_t a;
uint8_t b;
}
uint16_t c;
} STRUCTURE_A;
e poi confrontando a zero.
Mi piacerebbe sapere cosa ne pensi di queste soluzioni, quali di loro trovi più veloci e efficienti.
E se si tratta di un approccio migliore per favore dimmi ...
Grazie.
Cosa c'è di sbagliato semplicemente controllando l'intera struttura in un'istruzione 'if', come si potrebbe per una bandiera zero? –
Non dimenticare di imbottitura! – NPE
Hai implementato ciascuno dei tuoi tre diversi modi e confrontato le loro prestazioni? Cosa hai trovato? –