VB用了数组也太慢请问高手问题出在哪里如何改
VB用了数组也太慢请问高手问题出在哪里如何改附件http://pan.baidu.com/s/1ntiiNDf...
VB用了数组也太慢请问高手问题出在哪里如何改
附件http://pan.baidu.com/s/1ntiiNDf 展开
附件http://pan.baidu.com/s/1ntiiNDf 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)+提问者悬赏50(财富值+成长值)
展开全部
有两个地方可改进
redim preserve 这个语句每循环一次重定义一次数组长度,效率很底的。我做过一个试验,数组长度从1依次扩展到1亿花了5、6分钟,但是从1亿逐渐缩小到1才两三秒。原因是数组扩展时它要重新分配一个完整空间,然后把原有数据拷贝过去,而缩小的时候不需要重新分配空间,只是把最大下标指针前移就可以了。
通过循环数组元素连接成串也是很慢的,Join函数可取代。
如果要更快一些,就用词典对象,这个可以打开附件看看差别。
追问
好高手非加不可,计算交集好快,计算并集速度慢了一点,VB如何用词对象。再问一次吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你跑完多少秒,统计了吗,你可以关闭界面更新进行计算输出,完了再打开。
Application.ScreenUpdating = False
计算输出
Application.ScreenUpdating = True
Application.ScreenUpdating = False
计算输出
Application.ScreenUpdating = True
更多追问追答
追问
我问的是VB交集太慢如何改写,VBA太过超快还改什么?
追答
UBound(A)这种不要放到循环里,循环前计算一次,放到变量里
Dim Count As Integer
Count = UBound(A)
For i = 1 To Count
......
不要在循环里不停的Redim
开始定义的足够大(比如A+B那么大),不用的设置值为空,输出时判断为空不输出就可以了
如果只用前面的,碰到为空停止输出,这样效率更高
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询