PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 將向量的資料作scale down
作者:
CCT63
(CCT)
2015-04-15 23:45:05
這幾天寫嵌入式系統遇到這個問題
假設一個array
unsigned short A[]=[0 1 2 3 ... 31];
我需要將A每3點取樣一次存到另一個unsigned short B[]
目標: B[] = [0 3 6 ... 30]
我用的寫法類似這樣
for(i=0,j=0;i<32;i+=3,j++)
{
*(B+j) = *(A+i);
}
但是似乎這樣還是搶了一些其他IP的時間....
所以想請問一下有更好的寫法可以增加效率嗎?
謝謝
作者:
SocketAM2
(AM2)
2015-04-16 00:27:00
compiler優化選項開下去後大概都一樣吧從演算法下手對速度常常比較有感,除非是超內圈的loop
作者:
LPH66
(-6.2598534e+18f)
2015-04-16 00:28:00
現在的編譯器技術是能夠做到即使寫 B[3*i]=A[i];還是能編出像原 PO 這邊這麼寫的機器碼的
作者:
SocketAM2
(AM2)
2015-04-16 00:29:00
或你是embed system類沒DMA的,不然在這種地方大概摳
作者:
LPH66
(-6.2598534e+18f)
2015-04-16 00:30:00
呃, 應該是 B[i] = A[3*i]; XD 不過意思有到就是
作者:
SocketAM2
(AM2)
2015-04-16 00:30:00
不出速度來
作者:
LPH66
(-6.2598534e+18f)
2015-04-16 00:31:00
這裡的問題我猜跟 A[3*i] 存取位址是 6 的倍數有一點點關係6 的倍數表示大概要四圈才會有一個 aligned address咦還是兩圈就有? 總之或許這裡有一點關係在
作者:
WYchuang
(愛賴床的黃金獵犬)
2015-04-16 10:02:00
看看特殊指令級有沒有支援 比如Neon一次可以搬蠻大量的資料 加上loop unrolling試看看
繼續閱讀
[問題] 結構和指標定義問題
flyaway339
[問題] 找不到臉部偵測圖片路徑
jiqian
[問題] 使用Visual Studio 2013 from UML to C++
ptthidebear
[問題] 不使用乘法的計算與排序問題
signdecoded
[問題] BCB 6 動態連結dll問題
huang1000
[問題] 中置式變後置式
november1121
[問題] 基本RGB調色盤顯示(細部問題及程式優化)
redonizuka
[問題] 用C語法印出全型字元
jimmyoic
[問題] 關於pointer allocate memory問題?
wandering25
[問題] C 語言陣列用指標寫
chinagogoya
Links
booklink
Contact Us: admin [ a t ] ucptt.com