| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5952 人关注过本帖
标题:VB数组用for循环赋值,很耗时间,有没有优化的办法,谢谢
只看楼主 加入收藏
huangjunxing
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2014-8-13
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:4 
VB数组用for循环赋值,很耗时间,有没有优化的办法,谢谢
Dim i As Long
 Dim j As Long
 For i = 0 To 800
    For j = 0 To 800
        B1(2, i, j) = B2(2, i, j)
         B1(1, i, j) = B2(1, i, j)
         B1(0, i, j) = B2(0, i, j)
        
     Next j
 Next i
感觉这个地方十分耗时间,数组B1和B2是两个大小不一样的数组,B1的范围比B2大,用不了CopyMemory
搜索更多相关主题的帖子: VB 数组 for 时间 办法 
2017-09-28 13:02
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:4 
很耗时间,不应该啊。
复制数组的方法我能想到有几种
1. 楼主的这种方法。
2. 利用动态数组

比如
程序代码:
Sub try()
Dim a(1000, 1000)
Dim b()
For i = 0 To 1000

 For j = 0 To 1000
  a(i, j) = Rnd()

 Next j
Next i

t1 = Now()
b = a
t2 = Now()
MsgBox DateDiff("s", t2, t1)
End Sub

这个计算下来一秒时间都不用,所以不清楚为何你的会耗时间。
3. CopyMemory:个人觉得如果只是上限不一样应该不是问题,最后一项参数是长度,只要确定需要复制的上限是多少。 问题是,你的是多维数组,不清楚这个是在内存中如何排列的。 问题就复杂咯。

看看其他人有什么好的方法吧
2017-09-28 15:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:4 
多维数组,复制内容时,建议就是你这种的操作方式。

VB6是编译为机器代码时, 赋值 命令是运算最快的一种指令。

多维数组,如何排列,用命令显示地址,一个一个的显示,显示几个就明白了。

授人于鱼,不如授人于渔
早已停用QQ了
2017-09-28 17:56
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:4 
测试了一下, Form_Load过程耗时大概是1秒多一点1.2秒左右(包括加载界面与运行通用过程),Command1_ClIck过程耗时不到1秒,在40-150毫秒之间,因此根本谈不上“很耗时间”!
程序代码:
Dim B1(0 To 10, 0 To 1000, 0 To 1000) As String, B2(0 To 5, 0 To 800, 0 To 800) As String

Private Sub Command1_ClIck()
Dim I As Integer, J As Integer

 For I = 0 To 800
    For J = 0 To 800
        B1(0, I, J) = B2(0, I, J)
        B1(2, I, J) = B2(2, I, J)
        B1(1, I, J) = B2(1, I, J)
     Next J

 Next I
End Sub

Private Sub Form_Load()
Dim I As Integer, J As Integer, X As Integer
For X = 0 To 5

 For I = 0 To 800
    For J = 0 To 800
         Randomize
         B2(X, I, J) = CStr(Int(Rnd * 90 + 100))
     Next J

 Next I

 Next X
End Sub

在VB中,赋值是最快的,如果使用数组拷贝恐怕耗时要慢得多,因为需要一个一个读取数组地址,解压还是使用赋值比较好。

请不要选我!!!
2017-10-01 06:52
huangjunxing
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2014-8-13
收藏
得分:0 
回复 4楼 ZHRXJR
谢谢
2017-10-01 11:48
快速回复:VB数组用for循环赋值,很耗时间,有没有优化的办法,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013378 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved