W zależności od tego, jak działa określony system operacyjny, zazwyczaj oczekuje się, że pamięć zostanie przydzielona w sposób niezoptymalizowany, tak że gdy wywołuje się bajt, słowo lub inny niewielki typ danych do przydzielenia, wartość zajmuje cały rejestr, a wszystko to bardzo posiadać. Sposób, w jaki kompilator lub interpreter działa, aby to zinterpretować, jest jednak czymś innym, więc jeśli na przykład skompilujesz program w języku C #, wartość może fizycznie zająć rejestr dla siebie, jednak wartość zostanie sprawdzona na granicy, aby upewnić się, że nie spróbuj zapisać wartość, która przekroczy granice zamierzonego typu danych.
Jeśli chodzi o wydajność, a jeśli naprawdę jesteś pedantyczny na temat takich rzeczy, prawdopodobnie szybciej jest po prostu użyć typu danych, który najbardziej odpowiada docelowemu rozmiarowi rejestru, ale potem brakuje ci tego cudownego cukru syntaktycznego, który sprawia, że praca ze zmiennymi jest tak łatwa .
Jak ci to pomaga? Cóż, tak naprawdę to Ty decydujesz, w jakiej sytuacji kodujesz. Dla prawie każdego programu, jaki kiedykolwiek napisałem, wystarczy zaufać swojemu kompilatorowi, aby zoptymalizować rzeczy i użyć typu danych, który jest dla Ciebie najbardziej użyteczny. Jeśli potrzebujesz wysokiej precyzji, użyj większych typów danych zmiennoprzecinkowych. Jeśli pracujesz tylko z dodatnimi wartościami, prawdopodobnie możesz użyć liczby całkowitej bez znaku, ale w większości przypadków wystarczy użycie typu danych int.
Jeśli jednak masz bardzo surowe wymagania dotyczące danych, takie jak napisanie protokołu komunikacyjnego lub jakiś algorytm szyfrowania, użycie typów danych ze sprawdzonym zakresem może być bardzo przydatne, szczególnie jeśli próbujesz uniknąć problemów związanych z przekroczeniami / przekroczeniami danych lub nieprawidłowe wartości danych.
Jedynym innym powodem, dla którego mogę wymyślić z góry, aby używać określonych typów danych, jest to, że próbujesz komunikować zamiary w swoim kodzie. Na przykład, używając skrótu, mówisz innym programistom, że zezwalasz na liczby dodatnie i ujemne w bardzo małym zakresie wartości.