] Самая быстрая адресация массива

Я запускаю код анализа изображения в массиве, хранящем информацию об изображении. К сожалению, код очень тяжелый и занимает в среднем 25 секунд на выполнение одного кадра. Основная проблема, которую я вижу, - это адресация массива. Что быстрее всего проходит через 2-мерный массив и есть ли вообще какие-либо различия в

горизонтальном, затем вертикальном

for (int y = 0; y < array.Length; ++y)
    for (int x = 0; x < array[].Length; ++x)
        //Code using array[y][x]

и вертикальном, затем горизонтальном?

for (int x = 0; x < array[].Length; ++x)
    for (int y = 0; y < array.Length; ++y)
        //Code using array[y][x]

Кроме того, я попытался избежать прямой адресации и вместо этого использовать указатели.

for (int y = 0; y < array.Length; ++y)
    int* ptrArray = (int*)array[0];
    for (int x = 0; x < array[].Length; ++x, ++ptrArray)
        //Code using ptrArray for array[y][x]

или

for (int x = 0; x < array[].Length; ++x)
    int* ptrArray = (int*)array[0];
    for (int y = 0; y < array.Length; ++y, ptrArray += array[].Length)
        //Code using ptrArray for array[y][x]

Любая помощь приветствуется. Макс

11
задан Max Z. 13 December 2011 в 10:29
поделиться