История изменений
Исправление eao197, (текущая версия) :
Навскидку: у вас очень неудачное расположение данных в памяти. Вам нужны x(i) и dir_x(i), но они отстоят друг от друга на count элементов. Аналогично с y(i) и dir_y(i). Плюс к тому вы в одном цикле делаете обработку и x и y, что дает еще больше промахов мимо кэша.
Можно было бы попробовать делать два массива структур { float v, dir; } и обрабатывать их в двух независимых циклах.
PS. Откуда такое задание: от преподавателя или от работодателя?
Исходная версия eao197, :
Навскидку: у вас очень неудачное расположение данных в памяти. Вам нужны x и dir_x, но они отстоят друг от друга на count элементов. Аналогично с y и dir_y. Плюс к тому вы в одном цикле делаете обработку и x и y, что дает еще больше промахов мимо кэша.
Можно было бы попробовать делать два массива структур { float v, dir; } и обрабатывать их в двух независимых циклах.
PS. Откуда такое задание: от преподавателя или от работодателя?