搜索
查看: 486|回复: 1

关于listview的显示效率的一点点经验

 关闭 [复制链接]

1

主题

2

帖子

14

积分

新手入门

Rank: 1

积分
14
发表于 2017-12-26 21:05:15 | 显示全部楼层 |阅读模式
刚刚学习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秒,显示效果有所提高。不知道还有没有改善的其他方式。希望大家来探讨指教一下。。
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-12-26 21:13:51 | 显示全部楼层
完全无任何意义的问题,已关闭!
这跟打开论坛,没有任何必要把4万帖子一下子倒在首页上是一样的道理。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 17:45 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表