[心得] 影像處理各種存取方式
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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.88.120
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1481386444.A.3A0.html
※ 編輯: erspicu (61.70.88.120), 12/11/2016 00:31:55
推
12/11 11:37, , 1F
12/11 11:37, 1F
推
12/15 22:49, , 2F
12/15 22:49, 2F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章