作者mlmfree (ㄚ福)
看板C_Sharp
標題[問題] 奇怪的計算時間
時間Thu Mar 31 23:57:35 2011
我目前在寫一支關於影像色彩空間轉換的程式
是從RGB轉換到YUV
程式結果是沒有問題的
但是在消耗時間上出了一個不像bug的bug
以我們現在用的2560X1920的影像來說
做完一次轉換大約需要1.2秒左右
一開始以為是影像太大的緣故
後來把每一個pixel做轉換的時間記錄下來
發現某些時候在轉換的過程中會莫名停頓一下
會有這種發現是我在函式中放了兩個時間記錄點
DateTime T1 ,T2;
然後去計算這兩點之間差了多少ms
發現有的時候 這兩點之間 就算中間沒有任何程式碼
竟然差了15ms 正常狀況下中間沒有任何程式碼
時間差距應該小於1ms
猜測是可能CPU那段時間去執行別的程序了
不過這樣解釋也怪怪的
因為其他函式也不會這樣
希望有人可以幫我解答
以下是我的程式碼:
private void pixel2yuv(ref int[] o, ref double[] y)
{
DateTime T1 ,T2;
double nor_R, nor_G, nor_B;
double kr = 0.299, kb = 0.114;
nor_R = o[0] / 255.0;
nor_G = o[1] / 255.0;
T1 = DateTime.Now;
T2 = DateTime.Now;
Console.Write(CalTime(T1, T2)); //輸出時間記錄點差了多少
nor_B = o[2] / 255.0;
y[0] = kr * nor_R + (1 - kr - kb) * nor_G + kb * nor_B;
y[1] = 0.436 * ((nor_B - y[0]) / (1 - kb));
y[2] = 0.615 * ((nor_R - y[0]) / (1 - kr));
}
麻煩各位了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.246.32
→ Anonymoux:datetime.now 本身就有誤差了 只看一次也不準 04/01 01:25
→ optimist9266:或許用Stopwatch會比較準確喔 04/01 04:04
推 horngsh:推2F 04/01 09:29
→ mlmfree:感謝樓上幾位 我試試!! 04/01 09:56
→ kavana999:Stopwatch是做研究的好幫手... 04/01 17:03
→ Anonymoux:Stopwatch 其實不太準 04/07 22:41
推 horngsh:不太準,有實證嗎? 04/08 09:46