|
|
既然陈?想要,我就发上来,不过没有整理,很乱,大家凑合着看吧。
这是当初学习Alpha混合时候做的,目的想要看看vb的变量运算的效率。
数据中所耗时间在不同电脑上可能不同,但是可以作为参考。
(我的配置:P4A1.6G / 256M DDR266 /GF2 MX400)
我的结果和建议是:变量中Long最快,Variant最慢;类的属性比一般变量慢得多,如果可以不用那么就不要用类的属性;所有变量都要预先定义,尽量不要让Variant出现。特别是在循环中,注意这些都可以大大提高运行速度。
------------------------------------------------------------------------------------------------------------------
VB6的效率测试1
使用long作为for的循环变量可以使循环速度较Variant(默认)快一倍(是Variant的2倍),使用Single或Double的话则快0.5~0倍(是Variant的1.5~1倍,Double更稳定)。
测试数据:循环1024*768次,使用Variant变量耗时14到20毫秒,Long为9到10,Single为15到18,double为15到16。
赋值语句耗时:
测试数据:循环1024*768次,变量赋5,使用Variant变量耗时47到53毫秒,Byte变量为64到74毫秒,integer为27到34毫秒,Long为33到43,Single为37到43,double为38到44Currency为50到65毫秒。
其他相同,变量改赋小数15.44,则,使用Variant变量耗时54到57毫秒,Byte变量为94到98毫秒(自动四舍五入到整数位15),integer为52到56毫秒,Long为58到65,Single为37到42,double为37到44。
其他相同,变量为Form对象的ScaleLeft属性,赋整数5,则耗时343到350毫秒。赋小数15.44,则耗时969到973毫秒。
'form中属性定义
Dim sSS1 As Variant
Public Property Get SS1() As Variant
SS1 = sSS1
End Property
Public Property Let SS1(ByVal vNewValue As Variant)
sSS1 = vNewValue
End Property
其他相同,变量在为Form对象下自定义的Variant属性,赋整数5,则耗时627到647毫秒。赋小数15.44,则耗时649到660毫秒。
其他相同,变量在为Form对象下自定义的Integer属性,赋整数5,则耗时405到428毫秒。赋小数15.44,则耗时782到803毫秒。
其他相同,变量在为Form对象下自定义的Long属性,赋整数5,则耗时425到452毫秒。赋小数15.44,则耗时748到753毫秒。
其他相同,变量在为Form对象下自定义的Single属性,赋整数5,则耗时418到437毫秒。赋小数15.44,则耗时1017到1035毫秒。
其他相同,变量在为Form对象下自定义的Double属性,赋整数5,则耗时383到422毫秒。赋小数15.44,则耗时424到455毫秒。
字符串:
使用定长字符串比不定长字符串速度快一倍(是不定长的2倍),定长字符串的长度对速度略有影响。
测试数据:循环1024*768次,使用String变量,变量赋"as",耗时175到192毫秒,String*2为94到99,String*10为95到103,string*20为97到115,string*40为117到130,String*50为115到124,String*60为149到170,String*80为137到149,String*100为178到188。
字符串的实际赋值长度直接影响到速度。如,String*10 赋"asdffda"时耗时为120到130毫秒。而赋""(空字符串)为88到96毫秒。
自定义类的耗时:
定义一个类Cl1,包含一个long属性、一个Single属性、一个Byte属性、一个Integer属性、一个Double属性和一个variant属性。
属性定义直接使用Public
Public L1 As Long
Public S1 As Single
Public V1 As Variant
Public B1 As Byte
Public I1 As Integer
Public D1 As Double
测试结果:
循环1024*768次,变量赋5,使用Variant变量耗时150到160毫秒,Byte变量为145到155毫秒,integer为100到101毫秒,Long为100到111,Single为110到111,double为130到140。
变长字符串:Public St1 As String
测试赋值"as",耗时221到231。赋"asdffda"耗时基本相同。
Mod运算耗时相对除法运算稍慢一点,s1 mod 2 耗时 120毫秒
函数测试:
(文本还没有找到) |
|