关于"&"运算符效率低下的问题,好的解决办法

博客对比了字符串拼接中“&”和“+”的速度,指出“&”更快,因“+”需做类型判断和转换。还将两次“&”运算拆开提升速度,但仍有问题。最后给出CStrCat类代码,并提供测试性能的代码,对比不同拼接方式的耗时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道用“&”号比用“+”号快。因为“+”要对字符窜变量做类型判断并转换。

当时也没想出什么好办法。只是将两次“&”运算拆开,速度提了一倍。还是解决不了问题。
结果就是:fori1to5000,i以字符形式相加。用&运算,要300-500ms

现在试试下面这个。建了个CStrCat的类。

程序代码:
ClassCStrCat'这是类开始。
Privatei,sa()
PublicPropertyGetValue
RedimPreservesa(i)
Value=Join(sa,"")
EndProperty
PrivateSubClass_Initialize()
i=clng(0)
Redimsa(500)
EndSub
PrivateSubClass_Terminate()
Erasesa
EndSub
PublicfunctionAdd(ps)
Iflen(ps)=0ThenExitFunction
If(i>=ubound(sa))Thenupsize
sa(i)=ps
i=i+1
Endfunction
PrivateSubUpSize()
Dimu
u=ubound(sa)
RedimPreservesa(clng(u+u*0.1))
EndSub
EndClass


你可以用这个代码测试一下性能分别:

程序代码:
<%
PageExeTime1=Timer*1000'计时开始
Setsc=newCStrCat
Fori=0To5000
sc.addi&"aaaaaa"
next
response.writesc.value

'计时结束
Response.Write",Processedtime:"&fix(abs(CDBL(Timer)*1000-PageExeTime1))&"ms</font></p>"

PageExeTime2=Timer*1000
Fori=0To5000
sc2=sc2&i&"aaaaaa"
Next
response.writesc2
'计时结束
Response.Write",Processedtime:"&fix(abs(CDBL(Timer)*1000-PageExeTime2))&"ms</font></p>"%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值