Dzisiaj natknąłem się na sytuację, w której musiałem zdecydować, czy cała struktura składająca się z około 40 elementów wynosi zero - co oznacza, że każdy z elementów wynosi zero.
Myśląc jak zrobić to tak szybko i sprawnie, jak to możliwe, myślałem o 3 różnych sposobów, aby to zrobić:Preferowany sposób porównywania struktury do zera
- porównanie każdy element na zero, co skutkuje 40 if.
- przydzielanie podobnej struktury, która jest już wyzerowana, i
memcmp
ze strukturą. - zawijanie struktury w związku z typem wystarczająco dużym, aby pokryć całość.
np
typedef union {
struct {
uint8_t a;
uint8_t b;
}
uint16_t c;
} STRUCTURE_A;
i porównując ją do zera.
Chciałbym wiedzieć, co myślisz o tych rozwiązaniach, które z nich uważasz za najszybsze i najbardziej wydajne.
A jeśli chodzi o lepsze podejście, proszę mi powiedzieć ...
Dzięki.
Co jest nie tak z prostym sprawdzeniem całej struktury w wyrażeniu "if", tak jak w przypadku flagi zerowej? –
Nie zapomnij o wyściółce! – NPE
Czy wdrożyłeś każdy z trzech różnych sposobów i porównałeś ich wydajność? Co znalazłeś? –