在delphi中使用web services来进行数据的访问,但是发现程序执行的效率非常低,调试时发现大部分的时间花在将XML解析成PASCAL的对象上去了,对于这种现象不知大家有没有什么好的解决办法?

解决方案 »

  1.   

    我以前也遇到过类似问题,不知道是不是我的XML结构设计有问题还是读取的方法有问题,反正循环读出数据的时候挺慢的
      

  2.   

    是的,在循环中特别得慢,不知是不是因为XML的解析是用的MSDOM的缘故,不知有什么好的解决办法?
      

  3.   

    把数据定义为结构。
    然后用TBytedynArray 相互交流。这种方法传文件都可以500k/s的传送速度
      

  4.   

    >>把数据定义为结构
    那还要WEBSERVICE干什么^_^WEBService性能是软肋,没有好的办法解决。
    XML不要用来传输大数据量,数据量很大的话就按楼上的方法做吧。
      

  5.   

    定义为结构的意思是把数据放在一个自定义的记录里
    然后可以用copymemory放到TByteDynArray传输。
    这样传输的主要就是数据了。效率会提高很多。在webService里定义调用不要
    function xx(yyy):xx;stdcall;
    要尽量使用
    procedure xx(yyy);stdcall;
    可以节约返回的时间。webService 是在Dllhost里以线程的方法
    调用的,而且会存在很长时间。建议:
    一些工作:内存分配,对象创建等等就在 
    initialization初始化

    finalization里释放。