реклама на сайте
подробности

 
 
> Как сдвинуть все элементы массива на 1, Оптимизация этого процесса
azh
сообщение Dec 21 2007, 11:31
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 17-05-07
Пользователь №: 27 781



Здравствуйте!

Кто-нибудь знает как можно оптимизировать сдвиг элементов массива на 1 (для Blackfin):
-------------------------------------------------------------------
void AddSample(short pBuffer[], short sValue, int nSize)
{
int i;
for (i = 1; i < nSize; i++)
{
pBuffer[nSize - i] = pBuffer[nSize - i - 1];
}
pBuffer[0] = sValue;
}
--------------------------------------------------------------------
Как-нибудь можно для этого использовать кольцевые буфферы или DMA память-память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dtsar
сообщение Dec 21 2007, 18:16
Сообщение #2





Группа: Новичок
Сообщений: 11
Регистрация: 21-10-07
Пользователь №: 31 558



Цитата(azh @ Dec 21 2007, 14:31) *
Здравствуйте!

Кто-нибудь знает как можно оптимизировать сдвиг элементов массива на 1 (для Blackfin):
-------------------------------------------------------------------
void AddSample(short pBuffer[], short sValue, int nSize)
{
int i;
for (i = 1; i < nSize; i++)
{
pBuffer[nSize - i] = pBuffer[nSize - i - 1];
}
pBuffer[0] = sValue;
}
--------------------------------------------------------------------
Как-нибудь можно для этого использовать кольцевые буфферы или DMA память-память?


не совсем понятно для чего так делать.
я думаю что проще всего - ничего не сдвигать, а написатьчтение из массива на асме с кольцевым буфером.
дма тут - изврат. хотя, смотря сколько данных.
Go to the top of the page
 
+Quote Post
azh
сообщение Dec 21 2007, 18:40
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 17-05-07
Пользователь №: 27 781



Спасибо за ответы!

В help к VDSP++ написано, что можно использовать функцию circindex(), чтобы компилятор "сказал", что этот массив нужно поместить в кольцевой буффер, но как выяснилось такой код работает в почти в 1,5 раза медленнее, чем представленный ранее. С чем это может быть связано?
Ниже приведен код с функцией circindex().
--------------------------------------------------
void AddSampleA(short pBuffer[], short sValue, int nSize)
{
int i;
short nIndex = 0;

for (i = 0; i < nSize; i++)
{
pBuffer[nSize - nIndex] = pBuffer[nSize - nIndex - 1];
nIndex = circindex(nIndex, 1, FFT_SIZE);
}
pBuffer[0] = sValue;
}
--------------------------------------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- azh   Как сдвинуть все элементы массива на 1   Dec 21 2007, 11:31
- - rezident   А может проще ничего не двигать, а лишь модифициро...   Dec 21 2007, 11:45
- - dxp   Цитата(azh @ Dec 21 2007, 17:31) Кто-нибу...   Dec 21 2007, 11:57
|- - fontp   Цитата(dxp @ Dec 21 2007, 14:57) В этом п...   Dec 21 2007, 12:06
|- - fontp   Цитата(azh @ Dec 21 2007, 21:40) Спасибо ...   Dec 22 2007, 10:26
- - rezident   А зачем вообще нужно сдвигать буфер? Почему нельзя...   Dec 21 2007, 22:37
|- - shasik   Цитата(rezident @ Dec 22 2007, 00:37) А з...   Dec 22 2007, 06:20
- - azh   На самом деле, сдвиг всех элементов массива это то...   Dec 22 2007, 11:19
|- - fontp   Цитата(azh @ Dec 22 2007, 14:19) На самом...   Dec 22 2007, 12:52
- - azh   Большое спасибо за разъяснения! Действительно,...   Dec 22 2007, 13:58
- - vadkudr   Осталось добавить, что ДПФ сдвинутой по кольцу пос...   Jan 5 2008, 04:48
|- - Николай Z   Цитата(dxp @ Dec 21 2007, 14:57) Не увере...   Jan 5 2008, 08:32
|- - dxp   Цитата(Николай Z @ Jan 5 2008, 14:32) Вы ...   Jan 5 2008, 10:11
||- - Николай Z   Цитата(dxp @ Jan 5 2008, 13:11) P.S. Може...   Jan 5 2008, 10:32
||- - Edmundo   Цитата(Николай Z @ Jan 5 2008, 13:32) Да ...   Jan 5 2008, 15:39
|- - TSerg   Цитата(Николай Z @ Jan 5 2008, 11:32) Вы ...   Jan 14 2008, 11:14
|- - Николай Z   Цитата(TSerg @ Jan 14 2008, 14:14) Кольце...   Jan 14 2008, 13:52
- - fontp   Если речь идёт о скользящем ДПФ для немногих гармо...   Jan 6 2008, 13:15
- - alexander55   Цитата(fontp @ Jan 6 2008, 16:15) S(n) = ...   Jan 14 2008, 10:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 23:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016