LINUX.ORG.RU

История изменений

Исправление 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. Откуда такое задание: от преподавателя или от работодателя?