请教:怎样提高TStringList的效率(100分)

  • 主题发起人 主题发起人 swordrain
  • 开始时间 开始时间
S

swordrain

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序中,需要很频繁地对一TstringList(几百行)进行重新赋值、更新等操作,很方便,但现在发现运行中十分慢,以至于程序都不能流畅地运行,请教:怎样使用TStringList才能提高效率?
 
改用TStringStream;
 
对TStringList没有一些能提高效率的技巧吗?
 
比如在做什么时
 
我估计你实际上是希望用name=value 的模式,那你可以使用hashString或者THashStringList.获取会更快.再一个你可以在批量使用TStringList时使用updateBegin..updateend属性.
 
使用
updateBegin
updateend
很重要
 
目的:在为LCD窗体的一个TstringList属性不断地更换,以显示更新的歌词内容
 
纯 TstringList 不漫
 
如果这个StringList关联别的对象,当内容改变时会导致其它动作,比如重绘屏幕,那么有可能很慢的(每改变一个字符串就需要重绘屏幕一次)。
解决方法如其它人所述
 
用动态数组,复杂一点,但效率绝对比TStringlist高
 
才几百行,不至于慢呀
你都干吗了?
到底慢在什么地方,有没有仔细定位?
 
updateBegin
updateend
有什么作用?
 
updateBegin
updateend
能稍微提高速度
把源码贴出来,看看
 
几百行,应该很快的
 
用Tdxdbtreelist算了
 
updateBegin
updateend
这两个适用于对应的可视化控件重新处理stringlist中的string 显示的,不用这两个方法,每对stringlist进行一次操作都直接反映到stringlist中否则指哟调用了updateend后才反映到tstringlist中。
几百条内容如果正常操作不会影响到处理速度的除非tstringlist中的strings都包含很大的字符串。可能导致。
 
悲哀,这么多人,都在这里瞎搅和,哪来的的UpdateBegin与UpdateEnd???
我只知道TStrings有BeginUpdate与EndUpdate两个方法.
 
tstringlist是TStrings的子类,怎么会没有UpdateBegin&UpdateEnd?
我估计你的瓶劲不在这儿。
 
几百行应该不是问题,可能的代码效率不是很高,重复性代码太多。
建议用数组,去除冗余。
另外
updateBegin
updateend
可别忘记!
 
TstringList本质是相当于动态数组,排序、插入、删除效率极低。如果使用链表的话效果可能后好很多。
 
后退
顶部