[心得] 影像處理各種存取方式

作者: erspicu (.)   2016-12-11 00:13:58
https://github.com/erspicu/AccessDemo
https://github.com/erspicu/AccessDemo/blob/master/AccessDemo/Program.cs
對處理影像來說,最基本最基本的的課題有兩個
1.存取pixel的資料
2.存取pixel內各rgb各自部分的內容
處理完畢後,存回
對針最基本的資料讀取與儲存
測試了各種不同的策略
當然除了寫法差異外 其實跟硬體環境和runtime都有所關係
怎樣適合 請自行評估
下面是我的結果 有最佳化 非debug模式
在x86執行的話 以ulong的模式存取資料 就沒優勢了
相反的x64的話 用ulong存取資料 剛好是cpu一次讀取的長度
使用ulong一次讀兩顆pixel 在x64時代其實是比較有效率的
不過長寬必須是2的倍數
x64 64bit mode
Version: 4.0.30319.42000
[測試資料搬移速度]
Copy by bytes
cost : 4701
fps : 106
Copy by uint
cost : 1873
fps : 266
Copy by ulong
cost : 1442
fps : 346
[測試RGB各項存取處理搬移速度]
deal by bytes
cost : 4655
fps : 107
deal by uint way 1 (combine by bitwise)
cost : 4222
fps : 118
deal by uint way 2 (combine by byte loc)
cost : 3219
fps : 155
deal by ulong way 1 (combine by bitwise)
cost : 2758
fps : 181
deal by ulong way 2 (combine by byte loc)
cost : 2302
fps : 217
作者: jizang (阿魯米)   2016-12-11 11:37:00
作者: name2name2 (yang~hi)   2016-12-15 22:49:00

Links booklink

Contact Us: admin [ a t ] ucptt.com