作者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
1F:→ Anonymoux:datetime.now 本身就有误差了 只看一次也不准 04/01 01:25
2F:→ optimist9266:或许用Stopwatch会比较准确喔 04/01 04:04
3F:推 horngsh:推2F 04/01 09:29
4F:→ mlmfree:感谢楼上几位 我试试!! 04/01 09:56
6F:→ kavana999:Stopwatch是做研究的好帮手... 04/01 17:03
7F:→ Anonymoux:Stopwatch 其实不太准 04/07 22:41
8F:推 horngsh:不太准,有实证吗? 04/08 09:46