取一条曲线大致代码如下:(大概22条曲线) with form1,bmp do begin if checkvalue[0]=true then begin canvas.pen.color:=colorvalue[0]; canvas.moveto(axis_x[0],axis_y[0]); canvas.lineto(round(vxbegin+(datasave[cn].curtime-datasave[0].curtime)/1000* (vxend-vxbegin)/(xmax-xmin)), round(vybegin+(ymax-bufa[0])*(vyend-vybegin)/(ymax-ymin))); axis_x[0]:=round(vxbegin+(datasave[cn].curtime-datasave[0].curtime)/1000*(vxend-vxbegin)/(xmax-xmin)); axis_y[0]:=round(vybegin+(ymax-bufa[0])*(vyend-vybegin)/(ymax-ymin)); end; end; 这里解释变量: vxbegin,vxend,vybegin,vyend都是常量。代表image的长,宽; checkvalue[]和colorvalue[]数组是已知的选择变量; axis_x[]和axis_y[]是保存画图的初始点值。 datasave[]是记录型数组。里面保存读取TXT文本字节。其中有时间,单位是毫秒。 请各位给看看,是不是哪里处理有问题,请指点。谢谢
我觉得,其实影响速度的主要是数据太多吧。所以对于数据太多的情况下,有什么好的方法可以提高速度??我想过使用映射,move块搬移,但还是要计算每个数据啊。所以还是要循环,最终放弃了。
with form1,bmp do
begin
if checkvalue[0]=true then
begin
canvas.pen.color:=colorvalue[0];
canvas.moveto(axis_x[0],axis_y[0]);
canvas.lineto(round(vxbegin+(datasave[cn].curtime-datasave[0].curtime)/1000* (vxend-vxbegin)/(xmax-xmin)),
round(vybegin+(ymax-bufa[0])*(vyend-vybegin)/(ymax-ymin)));
axis_x[0]:=round(vxbegin+(datasave[cn].curtime-datasave[0].curtime)/1000*(vxend-vxbegin)/(xmax-xmin));
axis_y[0]:=round(vybegin+(ymax-bufa[0])*(vyend-vybegin)/(ymax-ymin));
end;
end;
这里解释变量:
vxbegin,vxend,vybegin,vyend都是常量。代表image的长,宽;
checkvalue[]和colorvalue[]数组是已知的选择变量;
axis_x[]和axis_y[]是保存画图的初始点值。
datasave[]是记录型数组。里面保存读取TXT文本字节。其中有时间,单位是毫秒。
请各位给看看,是不是哪里处理有问题,请指点。谢谢
大家给分析一下,有什么不对头的。谢谢了
上面是算法上的优化,是提高性能最快,最有效的方法.
具体到实际应用,可能会涉及技术上的优化,比如:
1.双缓冲机制.
2.后台线程绘图机制.
3.GPU绘图机制.
4.汇编优化机制.
等等...
相对于算法优化,技术上的优化提升速度不大,只有在算法无法优化时,技术优化才能提高性能.
你能帮我看看我上面贴的画图部分代码吗?看看哪里需要优化一下的?很是感谢了。谢谢你。