Powerbuilder中,数组无法在使用完后释放空间,datastore插入行的速度只有dw的百分之一。

    技术2022-05-12  22

    最近在写一个检索磁盘的小软件。发现两个问题。以前利用dt和dw处理数据的行数很少。很难发现这个问题。

     

    1. 数组无法在使用完后释放空间

    2. datastore插入行(insertrow())的速度只有dw的百分之一

     

    最开始使用findfirstfile,findnextfile将文件信息放入大数组中。但是发现使用完后。即使手动调用垃圾回收函数。数组占据的数百兆空间无法归还给操作系统。则想了一个办法。把dt直接作为ref传给uo去写入检索出来的文件信息。但是发现一个问题。用datastore的插入速度只有dw的百分之一,所以造成在uo中的dt_1.insertrow(0)成为最慢的瓶颈。不知道是怎么回事。以往的考虑都是尽量用dt,因为没界面,现在现在才发现dw的插入要快得多,5万行只要6秒;而dt插入5万行要几分钟。我想。这可能是跟dw有预先分配足够的空间吧。具体原因望哪位能指出一下。。。

     

    //这是测试代码

    dts_fileslist.reset()

    long i

    for i = 1 to 50000 yield() dts_fileslist.insertrow(0) if mod(i,200) = 0 then this.text = string(i)nextmessagebox("","OK")

     

    //

    dw_1.reset()

    long idw_1.setredraw(false)for i = 1 to 50000 yield() dw_1.insertrow(0) if mod(i,200) = 0 then this.text = string(i)nextdw_1.setredraw(true)messagebox("","OK")

     

     

     


    最新回复(0)