|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 fxl447098457 于 2016-12-28 14:43 编辑
我们经常使用动态数组,可能会认为,动态数组能够根据实际的需要,调整数组的长度,这样可以保证数组的长度刚好符合我们存放的数据量。而不出现多余的空数组元素。从而节省时间和资源。下面我们来看下例子。
- Sub test1() '固定数组 我电脑上耗费时间0.0000秒
- Dim arr(1 To 50000), i As Integer, t
- t = Timer
- For i = 1 To 10000 Step 1
- arr(i) = i
- Next
- MsgBox Format(Timer - t, "耗时0.0000秒")
- End Sub
- Sub test2() '动态数组 我电脑上耗费时间0.0078秒
- Dim brr(), i As Integer, t
- t = Timer
- For i = 1 To 10000 Step 1
- ReDim Preserve brr(1 To i)
- brr(i) = i
- Next
- MsgBox Format(Timer - t, "耗时0.0000秒")
- End Sub
复制代码
上面的两个过程里面test1和test2过程分别定义了两个数组arr(50000长度的固定数组),brr(动态数组),同样写入10000的数据,根据我的电脑环境测试,使用固定数组可以瞬间完成,而使用动态数组则花了0.0078秒。前者比后者要快一点。
下面我们再测试一下写入800000的数据量。
- Sub test3() '固定数组 我电脑上耗费时间0.0195秒
- Dim arr(1 To 1000000), i As Long, t
- t = Timer
- For i = 1 To 800000 Step 1
- arr(i) = i
- Next
- MsgBox Format(Timer - t, "耗时0.0000秒")
- End Sub
- Sub test4() '动态数组 我电脑上耗费时间12.7656秒
- Dim brr(), i As Long, t
- t = Timer
- For i = 1 To 800000 Step 1
- ReDim Preserve brr(1 To i)
- brr(i) = i
- Next
- MsgBox Format(Timer - t, "耗时0.0000秒")
- End Sub
复制代码
上面的两个过程里面test3和test4过程分别定义了两个数组arr(1000000长度的固定数组),brr(动态数组),同样写入800000的数据,根据我的电脑环境测试,使用固定数组耗时0.0195秒完成,而使用动态数组则花了12.7656秒。这个情况下前者比后者要快很多。
通过上面的比较,我们可以看出在调整数组长度的时候会消耗计算机资源。频繁的调整数组长度,会耗费不少时间,而这也违背了我们使用数组的初衷。所以一般对于数据量相对比较大的时候,还是建议直接给数组指定一个较大的上限,这样所造成的浪费要低于频繁更改数组长度所造成的消耗。 |
|