最近在制作一个自用小工具,用到了超级列表框,某些情况下需要插入5-10万左右的数据量,原生超级列表框的插入速度是较慢的,论坛有很多前辈【魔改】超级列表框的例子,大多实现起来都非常繁琐,实际使用上较为不便,cha询超列的消息过程中发现了一条超列消息,LVM_SETITEMCOUNT,作用就是预分配超列的项目内存,这样在插入表项时就不会频繁申请内存,从而提高了插入表项速度。
代码也超级简单,纯原生,就一条代码:超级列表框.发送消息(#LVM_SETITEMCOUNT,表项数,0)
速度对比情况:
纯原生无脑插入表项:5W≈24秒纯原生可视=假,插入表项:5W≈4秒
纯原生可视=假+LVM_SETITEMCOUNT,插入表项:5W≈2秒
源码例子下载:
demo.e
(4.87 KB, 下载次数: 148)
超级列表框1. 全部删除 () 启动时间 = 取启动时间 ()超级列表框1. 禁止重画 ()超级列表框1.可视 = 假 超级列表框1. 发送信息 (4143, 50000, 0 ) 计次循环首 (50000, I ) 表项索引 = 超级列表框1. 插入表项 (-1, 到文本 (表项索引 + 1 ), , , , )  超级列表框1. 置标题 (表项索引, 1, “标题1”) 超级列表框1. 置标题 (表项索引, 2, “标题2”) 计次循环尾 ()超级列表框1.可视 = 真 超级列表框1. 允许重画 ()超级列表框1. 发送信息 (4143, 0, 0 )启动时间 = 取启动时间 () - 启动时间 信息框 (启动时间, 0, , )
|