| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 222 人关注过本帖
标题:VB数组用for循环赋值,很耗时间,有没有优化的办法,谢谢
只看楼主 收藏
huangjunxing
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-8-13
结帖率:55.56%
  已结贴   问题点数: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
2017-09-28 13:02
xiangyue0510
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:75
帖 子:803
专家分:4708
注 册: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
等 级:版主
威 望:183
帖 子:4033
专家分:24873
注 册:2008-10-15
  得分:4 
多维数组,复制内容时,建议就是你这种的操作方式。

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

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

授人于鱼,不如授人于渔
早已停用QQ了
2017-09-28 17:56
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:51
帖 子:545
专家分:3117
注 册: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中,赋值是最快的,如果使用数组拷贝恐怕耗时要慢得多,因为需要一个一个读取数组地址,解压还是使用赋值比较好。

QQ    2653043392
2017-10-01 06:52
huangjunxing
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-8-13
  得分:0 
回复 4楼 ZHRXJR
谢谢
2017-10-01 11:48







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

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