Я хочу скопировать данные массива C в другой, но с расчетом между (т.е. не только копированием одного и того же контента из одного в другой, но с изменением данных):Более быстрый способ копирования массива C с вычислением между
int aaa;
int src[ARRAY_SIZE];
int dest[ARRAY_SIZE];
//fill src with data
for (aaa = 0; aaa < ARRAY_SIZE; aaa++)
{
dest[aaa] = src[aaa] * 30;
}
Это делается в буферах размером 520 или выше, поэтому цикл for является значительным.
Есть ли способ улучшить производительность здесь в том, что происходит с кодированием?
Я сделал некоторые исследования по этой теме, но я не мог найти ничего конкретного об этом случае, только о простом копию буфера Buffer (примеры: here, here и here).
Окружающая среда: GCC для ARM с использованием встроенной Linux. Однако указанный выше код используется внутри проекта C, работающего внутри выделенного процессора для вычислений DSP. Общий процессор - OMAP L138 (процессор DSP включен в L138).
Взгляните на устройство Даффа: http://en.wikipedia.org/wiki/Duff%27s_device –
OpenMP/threading может ускорить его за счет факторов. – Carlise
@Carlise вы уверены, что несколько потоков не будут создавать проблемы с кешем при использовании нескольких ядер? в случае единственного вы платите контекстный переключатель между разными потоками. – DRC