Jeżeli rozmiary wierszy macierzy są wielokrotnościami dwójki to obliczenia będą szybsze
const int rows = 10, columns = 8; float matrix[rows][columns]; int i, j; int order(int x); ... for (i = 0; i < rows; i++) { j = order(i); matrix[j][0] = i; }
Zapis
matrix[j][0]
// ogólny przypadek (int)&matrix[0][0] + j * (columns * sizeof(float)) // rozmiar wiersza jest wielokrotnością dwójki (int)&matrix[0][0] + j << 5
Czasami sztuczne powiększenie struktury aby jej rozmiar był potęgą dwójki może przyspieszyć działanie programu
struct S1 { int a; int b; int c; int UnusedFiller; // "Sztuczne" wypełnienie }; int order(int x); const int size = 100; S1 list[size]; int i, j; ... for (i = 0; i < size; i++) { j = order(i); // przeglądamy w zadanej kolejności list[j].a = list[j].b + list[j].c; }