首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

将小弟我的源代码移植到自制组件中后变慢

2012-02-02 
将我的源代码移植到自制组件中后变慢?我有一段源代码,较长,就不贴出来了,是用来作屏幕差异传输的,其中有一

将我的源代码移植到自制组件中后变慢?
我有一段源代码,较长,就不贴出来了,是用来作屏幕差异传输的,其中有一段


...
j := 0;
while j <= NewBmp.Height-1 do begin
  p1 := NewBmp.scanline[j];
  p2 := OldBmp.scanline[j];
  xs := 0; // 用来测试当前行是否有不同的像素
  for i := 0 to NewBmp.Width-1 do begin
  if (P1[i] <> P2[i] then begin
  inc(xs);
  break; // 只要有不同就跳出当前行扫描
  end;
  end;
  if xs > 0 then begin
  ...
  // 复制自当前行开始10行的图像到临时位图,最后加入到差异数据流中
  ...
  inc(j,9); // 连同下面的inc(j) 正好跳过10行,加快速度
  end;
  inc(j);
end;
...


将这段代码放在一个unit中仅当作一个过程处理新旧两幅图片时速度很快,平均一秒能有十几幅,能满足屏幕监控的要求,我又把这段代码放到一个自制的组件里,当作该组件的一个过程,又为该组件添加了新图片和旧图片两个成员,
再用这个组件进行同样的程序开发,速度就慢了很多,平均要十几到二十秒才能有一幅图片
后来我又测试了注释掉几行代码,发现只要注释掉 for 循环内的任一条语句都能显著加快速度,去掉整个 for 循环速度就很快了,这是为什么呢?


[解决办法]
编译优化引起的?看看控件的编译选项及程序的编选项,特别是优化的部分.

热点排行