Ja klar, wenn die paar Bytes für dich Verschwendung sind und Performance dir egal ist, dann ja: Es wird Speicher verschwendet
Wenn wir mal nicht nur von x86 reden, dann ist diese Verschwendug, wie gesagt, oft
notwendig, weil's sonst crashed. Padding ist also im allgemeinen nicht einfach nur eine Performanceoptimierung, sondern etwas, das der Compiler machen
muss, damit überhaupt irgendwas funktioniert. x86
erlaubt zwar Zugriffe auf jede beliebige Adresse, ist in der Hinsicht aber afaik eher ein Exot. Und das funktioniert auch nur, weil deine x86 CPU sich extra drum kümmert, die notwendigen Reads abzusetzen und deine Bytes herauszuschälen, was natürlich entsprechend langsam ist. Ich würde das eher als besonderes Feature von x86 betrachten. Und auch auf x86 gibt es einzelne Befehle, die richtiges Alignment der Daten voraussetzen. Beispiel: SSE. Und dann sind wir wieder dort, wo der Thread hier mal angefangen hat. Code der XMMATRIX verwendet, kompiliert auf x86 zu SSE Befehlen. Du kannst davon ausgehen, dass XMMATRIX so schnell ist, wie es nur irgendwie geht. Der einzige Weg, um gegenüber XMMATRIX
vielleicht noch
ein kleines bisschen was rauszuholen, wäre, jeweils handoptimierten SSE-Code zu basteln. Aber damit das alles so funktioniert, müssen die Daten an Adressen liegen, die ein Vielfaches von 16 sind. Es gäbe auch in SSE Befehle, denen das Alignment egal ist. Die sind aber grottenlangsam. Und der einzige Grund, aus dem man XNA Math verwendet, ist Performance. Daher setzt XNA Math einfach voraus, dass die Daten richtig ausgerichtet sind...