To tylko zasada działania.
Chodzi o to, że ponieważ typy wartości są przekazywane przez wartość, cały rozmiar struktury musi zostać skopiowany, jeśli jest przekazywany do funkcji, podczas gdy dla typu odniesienia, tylko odwołanie (4 bajty) musi być skopiowane. Konstrukcja może jednak zaoszczędzić trochę czasu, ponieważ usuwa się warstwę pośrednią, więc nawet jeśli jest ona większa niż 4 bajty, może być jeszcze wydajniejsza niż przekazywanie odniesienia. Ale w pewnym momencie staje się tak duży, że koszt kopiowania staje się zauważalny. I powszechna zasada jest taka, że zazwyczaj dzieje się to około 16 bajtów. Wybrano 16, ponieważ jest to ładny numer okrągły, potęga dwóch, a alternatywy to albo 8 (które jest zbyt małe i sprawiłoby, że struktury są prawie bezużyteczne), albo 32 (w którym to momencie koszt kopiowania struktury jest już problematyczny jeśli używasz struktur ze względów wydajnościowych)
Ale ostatecznie to jest porady dotyczące wydajności. Odpowiada na pytanie "który byłby najbardziej efektywny w użyciu? Struktura lub klasa?". Ale nie odpowiada na pytanie "co najlepiej odwzorowuje moją domenę problemową".
Struktury i klasy zachowują się inaczej. Jeśli potrzebujesz zachowania struktury, to chciałbym powiedzieć, żeby była to struktura, bez względu na rozmiar. Przynajmniej dopóki nie napotkasz problemów z wydajnością, zrób profil swojego kodu i stwórz problem ze strukturą.
swój link nawet mówi, że to tylko kwestia wykonania:
Jeśli jeden lub więcej z tych warunków nie są spełnione utworzyć rodzaj odniesienia zamiast struktury. Niepowodzenie pod numerem może negatywnie wpłynąć na wydajność.
Tak, link mówi, że jest to kwestia wydajności, ale jest również dość mocny w używanym języku, np. "Nie definiuj struktury ...". Mogli powiedzieć: "To nie jest zalecane ..." – Joe
To prawda, że brzmienie wydaje się nieco mocne. Ale może to być podkreślenie, że klasy przydzielane stertom nie są wolne (jak mogą spodziewać się programiści wywodzący się z języka C/C). – jalf
Jedną z prawdopodobnych odpowiedzi dla dokładnej liczby jest to, że 16-bajtowa struktura jest wciąż wystarczająco mała, aby zmieścić się na procesorze. Magistrala pamięci lub do kopiowania jako część instrukcji SIMD. Większe struktury stają się bardziej skomplikowane do kopiowania lub odczytu/zapisu. – jalf