加载了一个大容量的TXT文本,目前我用的是分块映射操作。每加载一块,在其中有判断数据正确与否,计算,描点画图等。感觉速度还是不够快速,大家可有更好的方法来提高速度??谢谢了!

解决方案 »

  1.   

    建立索引。。可以。
    画哪加载哪里。直接用文件偏移读取文件。
    读取可以用 sdk和汇编优化。。
      

  2.   

    其实楼主觉得慢应该是CPU的利用率没上来。
      

  3.   

    很有可能吧。以前用chart控件画图,内存超级飙升。
    里可有更好的办法,请指点一、二。谢谢了。
      

  4.   

    我用的image控件描点,应该是静态的图形吧。以横轴为时间,10ms描一个点。没考虑屏幕像素,一万,几百万个点都能描在image控件上啊。
    画图的原理,就是利用梯形微积分吧。
    我画图的思路是:在把所有数据点描完后,自动存储一个BMP图形。当两个游标之间的图形需要放大的时候,在取出两游标之间的数据,重新画图,这样重复,不停放大到某一个不能再放大的值为止。最后要还原全图,就直接导入存储的BMP图形即可。
    不知道你怎么处理??有何高见?请赐教,谢谢!!
      

  5.   

    用文本保存的数据肯定慢啊。数据读进来后需要做文本至数字的转换,这很耗费时间。应该保存成二进制数据,用 stream 读进来,再借助 Move 函数取数据。数据结构可以自己设计,例如:TGraphItem = packed record
      Kind: Word;
      X1, Y1, X2, Y2: Integer;
      Color: TColor;
    end;这个例子很简单,只为了说明问题。无论多么复杂,其中所有成员都要采用定长数据类型,不能用 string 这样的不定长类型。这样,整个 TGraphItem 也就是定长类型,可以用 Move 函数来操作,无需做任何数据类型转换。Move 编译后会转换成速度非常快的机器代码。
      

  6.   

    TO jinghai1776:
      源数据是TXT文本保存的文件,里面全是采集的ASCII码。我的任务就是读出这个TXT里的数据,进行计算,然后描点到IMAGE里。当然所有读出的数据有保存到一个记录型的结构体里,因为图画完了后,要使用这些数据。
      这里,中间的计算、描点,很费时间,想优化一下,你可有好的方法??谢谢了
      

  7.   

    vividw说的是对的,你说人家在"卖弄",你让人家怎么回你???
    不如你出2W RMB打到vividw的支付宝上,证明一下看他是否"卖弄"...
    现在的Delphi环境是越来越差啦,只能说:Delphi已死,有事烧纸...
      

  8.   

    你开始连 问题都没有描述清楚。 后面才说是 用的chart的
    chart性能是有问题,大数据的处理不好的话,看下gdi+的接口处理器来 不难。 我说的方法肯定是研究过 可行的。你认为难 只是没研究过。 
      

  9.   

    很久以前用过chart控件了,这次的提问里,压根就没有提到这个控件。
      

  10.   


    已经结贴了?不太清楚你中间的计算和描点具体操作。如果速度瓶颈在这里,你不妨用汇编程序来操作。Delphi 插入汇编代码很方便,可以直接在 Pascal 变量和寄存器之间相互赋值,特别适合大量的简单操作,速度能提高很多。