未公开的返回数组型函数加速秘诀

北鼻安好123

北鼻安好123

2016-02-19 19:25

下面图老师小编跟大家分享一个简单易学的未公开的返回数组型函数加速秘诀教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!
在VB6中,函数是能够返回数组对象的。这种情况下,我们不能象返回对象或者数值的其他函数一样使用函数名当做局部变量来存储中间结果,因此不得不生成一个临时局部数组,函数退出前再分配这个数组给函数名,就象下面的代码一样:

'返回一个数组,其中含有N个随即元素

'并且将平均值保存在AVG中

FunctionGetRandomArray(ByValnAsLong,avgAsSingle)AsSingle()

DimiAsLong,sumAsSingle

ReDimres(1Ton)AsSingle

'以随机数填充数组,并计算总和

RandomizeTimer

Fori=1Ton

res(i)=Rnd

sum=sum res(i)

Next

'赋值结果数组,计算平均值

GetRandomArray=res

avg=sum/n

EndFunction

难以置信的是,只需要简单地颠倒最后2条语句的顺序,就能使上面这段程序变得快些:

'...'赋值结果数组,计算平均值

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

avg=sum/n

GetRandomArray=res

EndFunction

例如,在一个PentiumII333MHz机器上,当N=100,000时,前段程序运行时间为0.72秒,后段程序则为0.66秒,前后相差10。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

原因何在呢?前段程序中,VB将拷贝res数组到GetRandomArray对应的结果中,当数组很大时,花费的时间是很长的。后段程序中,由于GetRandomArray=res是过程的最后一条语句,VB编译器就能确认res数组不会被再使用,因此将直接交换res和GetRandomArray的地址数值,从而节省了数组元素的物理拷贝操作以及随后的res数组释放操作。

总结如下:当编写返回数组的函数时,一定要将分配临时数组到函数名的语句放在最后,就是其后紧挨者ExitFunction或者EndFunction的位置。

->

展开更多 50%)
分享

猜你喜欢

未公开的返回数组型函数加速秘诀

编程语言 网络编程
未公开的返回数组型函数加速秘诀

oracle 实现 split 函数 (返回数组)

编程语言 网络编程
oracle 实现 split 函数 (返回数组)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

未公开的SQL Server口令的加密函数

编程语言 网络编程
未公开的SQL Server口令的加密函数

利用MSSQL sp自制未公开的加密函数

SQLServer
利用MSSQL sp自制未公开的加密函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

未公开的PHOTOSHOP快捷键

PS PS教程
未公开的PHOTOSHOP快捷键

两个未公开的ACCESS方法的使用技巧

电脑网络
两个未公开的ACCESS方法的使用技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用InStr函数实现代码减肥

用InStr函数实现代码减肥

word2003的“绘图”工具栏的具体使用

word2003的“绘图”工具栏的具体使用
下拉加载更多内容 ↓