全code....
http://paste.ofcode.org/3bw8ufpUwuPqT4xNfwUScZH
你覺得在你預設的猜測中
a.
color = (uint)((0xff << 24) | ((rgb555 & 0x1f) << 19) | ((rgb555 & 0x3e0)
<< 6) | ((rgb555 & 0x7c00) >> 7));
b.
color = rgb555_Table[rgb555 ];
你會覺得哪個速度比較快????
一個是好幾次的bitwise計算算出結果..
一個是用index撈取array一個步驟
答案是 a 比較快... 不管是debug模式下或是一般模式
(現在一般電腦的情況...cpu效能超高,一般記憶體沒追上cpu速度)
只是一般模式a快得更多
而pointer的寫法 debug模式下,快一般array的操作方式一點,一般模式,
用指標跟ARRAY速度差不多(應該是一樣)....
pointer在c#好像不只一種方式操作
參考
http://nbsoftsolutions.com/blog/high-performance-unsafe-c-code-is-a-lie
真的JIT下去優化後,很多概念似乎都不太準...
不過可以確定的是記憶體ARRAY的東西真的慢.....
有看過有一種處理技巧是用把array cop 到local變數去(array量少時),
進行後面的計算...
當然也看過一些project求好心切,都會把一些運算直接算出table....
如果用code好維護乾淨為由是ok的...但效率來說有可能會更慢