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

最近在写一个检索磁盘的小软件。发现两个问题。以前利用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)
next
messagebox("","OK")

 

//

dw_1.reset()

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值