VB6字符串连接操作效率

n久没上来发东西了,感觉很过意不去,又找了点东西放上来。

VB6字符串连接(&)操作效率

本人某天为了优化某人写的VB6模块而临时测试了下VB6里面字符串的“&”(连接)操作的耗时。

现在把当时的记录放上来,大家可以参考下。

试试下面三段VB6代码:

功能完全相同,都是获得一个字符串,这个字符串含有重复10遍的连起来的从0到10000的数字。

但效率可是完全不同的,你可以分别测试一下它们的耗时。

1----------------

 Dim str1 as String
 
Dim s1 As Long, s2 As Long
  
  
For s2 = 0 To 10
    
For s1 = 0 To 10000
      str1 
= str1 & Str$(s1)
    
Next
  
Next

 

 

2-----------------

Dim str1 as String,str2 as String
Dim s1 As Long, s2 As Long

  
For s2 = 0 To 10
    str2 
= ""
    
For s1 = 0 To 10000
      str2 
= str2 & Str$(s1)
    
Next
    str1 
= str1 & str2
  
Next

 

 

3-----------------

  Dim str1 as String,str2 as String
  
Dim s1 As Long, s2 As Long
  
Dim st1 As Long, ln1 As Long
  
For s2 = 0 To 10
    str2 
= Space(100000)
    st1 
= 1
    
For s1 = 0 To 10000
      ln1 
= Len(Str(s1))
      
Mid(str2, st1, ln1) = s1
      st1 
= st1 + ln1
    
Next
    
    st1 
= str1 & RTrim$(str2)
  
Next

 


我在Debug模式下,Core2Duo T7100下的测试结果是
1、76秒多
2、2.6秒左右
3、120毫秒左右

编译成代码速度优化的EXE本地代码后,速度没有提高多少。

差了多少倍?

结论:字符串&操作相当的费时,而且字符串越大&操作越费时。
(同时可见字符串&操作几乎不能被优化多少)

 

(这么低的效率,明显VB6对&操作只是呆板的重新申请空间然后copy而已)

另外,貌似Mid语句的效率没有想象中的那么低下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值