想法:在影像處理run pixel上用了Parallel Foreach跟For,比非Parallel的快非常多,但是卻少了Index。在做pixel操作的時候有時需要知道要寫回哪裡。
實作:
byte[] byteArray = binary.Bytes; //size:307200
var query = byteArray.Select((val, idx) => new { Index = idx, Value = val });
int[] result = new int[byteArray.Length];
//平行 擇一上註解
Parallel.ForEach(query, b=>
{
if (b.Value >= 255)
{
result[b.Index] = -1;
}
} //close lambda expression
); //close method invocation
//非平行 擇一上註解
foreach (var b in query)
{
if (b.Value >= 255) result[b.Index] = -1;
}
結論:驚!! Parallel方法花了25ms。非Parallel花了17ms。Parallel for是否又比Parallel foreach?!
等國科會結束我再來比較一下Parallel for!!!
沒有留言:
張貼留言