|
刚刚学习aardio写了个桌面软件,用了sqlite数据库+listview显示数据,数据量目前还不大,大约就4万条。刚开始学,没啥经验,边写边学,总算是完成功能了。但是查询所有数据,一下子4万条记录一下子显示出来,慢慢等待。。。一分钟后出来了。这结果肯定不满意了。就想着有没有啥方式能提高速度啊。最终有所收获。几乎是开始时间的1/3, 分享出来,跟大家探讨下listview显示大数据。
开始代码:
winfom.static.text = "查询中请稍等......."
var tk = time.performance.tick();
var tb = db.getTable("SELECT ID,user,weight, datetime(DateUnix, 'unixepoch' ) as newdate FROM [ info] order by DateUnix");
for(i=1;#tb;1){
winfom.listview.addItem({i;tb[ i ].ID;tb[ i ].weight;tb[ i ].newdate;} );
}
}
winfom.static.text = "共" + winfom.listview.count+"条记录 共执行" + string.format("%-5.4f",tostring(( time.performance.tick() - tk ) / 1000 ))+"秒" ;
4万多条记录,执行后花费了将近62秒,然后自己就摸索查找资料,无所获,最后尝试出下面代码:
winfom.static.text = "查询中请稍等......."
winfom.listview.hide =true; //这里增加了代码
var tmptab = {}; //这里增加了代码
var tk = time.performance.tick();
var tb = db.getTable("SELECT ID,user,weight, datetime(DateUnix, 'unixepoch' ) as newdate FROM [ info] order by DateUnix");
for(i=1;#tb;1){
table.push(tmptab{i;tb[ i ].ID;tb[ i ].weight;tb[ i ].newdate;} ) //这里修改了代码
}
winfom.listview.items= tmptab; //这里增加了代码
winfom.listview.hide =false; //这里增加了代码
winfom.static.text = "共" + frmTabPageSeach.listview.count+"条记录 共执行" + string.format("%-5.4f",tostring(( time.performance.tick() - tk ) / 1000 ))+"秒" ;
最后优化结果:4万多条记录,从62秒减少到24秒,显示效果有所提高。不知道还有没有改善的其他方式。希望大家来探讨指教一下。。 |
|