P.Y. написав:Необов'язково створювати цілий масив-дублікат — достатньо кількох змінних для зберігання найближчих комірок. Хоча з масивом-дублікатом, мабуть, простіше написати, не заплутавшись у власних ногах.
Так, зі зберіганням кількох комірок у проміжному масиві, і робив колись-колись. На компах з малою оперативкою і без кеша.
На сучасних, думаю, краще новий масив-дублікат і робота в нього.
По-перше, як вже сказано, простіше не заплутатися (проміжний масивчик і робота через нього є передчасною оптимізацією).
По друге, старий масив лише читається, новий лише пишеться, що може дати вищу продуктивність — при записові одного елемента інвалідується вся лінійка кеша, і якщо це запис у старий масив, то зчитування наступного елемента з цієї ж лінійки кеша може спричинити нове вичитування з оперативної пам'яті.
І якщо раптом на довгих масивах схочеться задіяти SIMD, це теж буде легше з двома незалежними масивами.