大数据处理,包括计算,描点等(这里计算一个点,描一个点)。除了使用循环外,还有什么方法??各位同仁赐教,谢谢??

解决方案 »

  1.   

    循环内部:就是简单的代入通用公式计算,计算出来的点,描在image上,也没用什么嵌套循环和复杂的计算啊。
      我觉得,其实影响速度的主要是数据太多吧。所以对于数据太多的情况下,有什么好的方法可以提高速度??我想过使用映射,move块搬移,但还是要计算每个数据啊。所以还是要循环,最终放弃了。
      

  2.   

    取一条曲线大致代码如下:(大概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文本字节。其中有时间,单位是毫秒。
    请各位给看看,是不是哪里处理有问题,请指点。谢谢
      

  3.   

    我使用delphi编程,其他语言不怎么懂。画的是BMP图形,BMP是自己创建的画布。画完了有释放。
      

  4.   

    在bmp上画完了所有点,最后调用draw(0,0,bmp);bmp.free;
    大家给分析一下,有什么不对头的。谢谢了
      

  5.   

    再补充一些吧:
    上面是算法上的优化,是提高性能最快,最有效的方法.
    具体到实际应用,可能会涉及技术上的优化,比如:
    1.双缓冲机制.
    2.后台线程绘图机制.
    3.GPU绘图机制.
    4.汇编优化机制.
    等等...
    相对于算法优化,技术上的优化提升速度不大,只有在算法无法优化时,技术优化才能提高性能.
      

  6.   

    To yayongm
       你能帮我看看我上面贴的画图部分代码吗?看看哪里需要优化一下的?很是感谢了。谢谢你。