Я запускаю код анализа изображения в массиве, хранящем информацию об изображении. К сожалению, код очень тяжелый и занимает в среднем 25 секунд для запуска через один кадр. Основная проблема, которую я вижу, - это адресация массива. Какой из них наиболее быстрый для запуска через 2d-массив и существуют ли какие-либо различия в
горизонтальный, а затем вертикальный
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]
Любая помощь приветствуется. Макс