国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

未公開的返回數(shù)組型函數(shù)加速秘訣

2019-11-18 17:30:35
字體:
供稿:網(wǎng)友
在VB6中,函數(shù)是能夠返回數(shù)組對象的。這種情況下,我們不能象返回對象或者數(shù)值的其他函數(shù)一樣使用函數(shù)名當(dāng)做局部變量來存儲中間結(jié)果,因此不得不生成一個臨時局部數(shù)組,函數(shù)退出前再分配這個數(shù)組給函數(shù)名,就象下面的代碼一樣:

'返回一個數(shù)組,其中含有N個隨即元素

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

FunctionGetRandomArray(ByValnAsLong,avgAsSingle)AsSingle()

DimiAsLong,sumAsSingle

ReDimres(1Ton)AsSingle

'以隨機(jī)數(shù)填充數(shù)組,并計算總和

RandomizeTimer

Fori=1Ton

res(i)=Rnd

sum=sum res(i)

Next

'賦值結(jié)果數(shù)組,計算平均值

GetRandomArray=res

avg=sum/n

EndFunction

難以置信的是,只需要簡單地顛倒最后2條語句的順序,就能使上面這段程序變得快些:

'...'賦值結(jié)果數(shù)組,計算平均值

avg=sum/n

GetRandomArray=res

EndFunction

例如,在一個PentiumII333MHz機(jī)器上,當(dāng)N=100,000時,前段程序運(yùn)行時間為0.72秒,后段程序則為0.66秒,前后相差10。

原因何在呢?前段程序中,VB將拷貝res數(shù)組到GetRandomArray對應(yīng)的結(jié)果中,當(dāng)數(shù)組很大時,花費(fèi)的時間是很長的。后段程序中,由于GetRandomArray=res是過程的最后一條語句,VB編譯器就能確認(rèn)res數(shù)組不會被再使用,因此將直接交換res和GetRandomArray的地址數(shù)值,從而節(jié)省了數(shù)組元素的物理拷貝操作以及隨后的res數(shù)組釋放操作。

總結(jié)如下:當(dāng)編寫返回數(shù)組的函數(shù)時,一定要將分配臨時數(shù)組到函數(shù)名的語句放在最后,就是其后緊挨者ExitFunction或者EndFunction的位置。

->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 迁安市| 金阳县| 资阳市| 丰宁| 内黄县| 清流县| 浦东新区| 旅游| 安化县| 万全县| 大姚县| 报价| 新昌县| 景德镇市| 营山县| 玉田县| 永寿县| 南华县| 新建县| 泌阳县| 衡水市| 中西区| 景泰县| 彭阳县| 宜州市| 磐安县| 定南县| 乌鲁木齐县| 乌审旗| 新田县| 织金县| 宣汉县| 津市市| 宁陕县| 弥渡县| 将乐县| 图片| 石柱| 尤溪县| 浦北县| 祁连县|