Często zdarza się, że wiesz, że twoja pętla nigdy nie będzie działać więcej niż x liczba razy, gdy x może być reprezentowany przez bajt lub krótki, w zasadzie typ danych jest mniejszy niż int.Dlaczego liczba całkowita jest zawsze używana jako zmienna sterująca w pętli for?
Dlaczego używamy int, który zajmuje 32 bity (z większością języków), gdy wystarczy coś takiego jak bajt, który ma tylko 8 bitów.
Wiem, że mamy 32- i 64-bitowe procesy, dzięki czemu możemy łatwo pobrać wartość podczas pojedynczej podróży, ale nadal zużywa ona więcej pamięci. Albo czego tu brakuje?
AKTUALIZACJA: Tylko w celu wyjaśnienia. Wiem, że szybkość nie ma żadnej różnicy. Pytam o wpływ na zużycie pamięci.
Naprawdę? Większość kodu widziałem używa pewnej formy typu unsigned. –
@Billy ONeal: w niektórych osadzonych mikropoleceniach typ bez znaku może oferować lepszą wydajność niż podpisany, kosztem większej ostrożności przy logice zakończenia pętli. Z drugiej strony, jeśli procesor taki jak ARM przechowuje coś podobnego do uint16 w rejestrze 32-bitowym, musi dodać dodatkowy kod, aby "przyciąć" wartość do 16 bitów. Żaden taki kod nie byłby potrzebny z int16 (ponieważ wszystko może się zdarzyć, gdy int16 ma przypisaną wartość poza zakresem -32768..32767, kompilator mógłby po prostu pozwolić swojej wartości zrobić wszystko, co jest wygodne). – supercat
Czy tworzysz wystarczającą liczbę liczników pętli, gdzie zmiana ich typów ma * widoczny * wpływ na zużycie pamięci? Jeśli tak, to zgłaszam, że masz większe problemy niż tylko używanie czegoś szerszego niż konieczny. –