Компилятор может улучшить производительность кэша, расположив поля близко друг к другу, к которым часто обращаются вместе (например, внутри цикла), чтобы они оказались в одной строке кэша.
Обновление : еще один больший потенциал оптимизации - это выравнивание членов. Например, byte
может быть выровнено на 1 байт, а int
обычно выровнено на 4 байта. Итак, учитывая:
byte b1;
int i1;
byte b2;
int i2;
Вы могли бы потратить 3 байта пространства при выравнивании целых 4 байтов:
b1 0 0 0
i1 i1 i1 i1
b2 0 0 0
i2 i2 i2 i2
Переупорядочив на
i1 i2 b1 b2
компилятор может уменьшить количество отходов:
i1 i1 i1 i1
i2 i2 i2 i2
b1 b2 0 0
Так что нужно всего 12 вместо 16 байтов.
Это зависит от используемой архитектуры ЦП или нет, но это дает выигрыш в производительности. Например, большинству 32-битных RISC-процессоров нравятся их 32-битные данные.