我们知道用“ & ”号比用“+”号快。因为“+”要对字符窜变量做类型判断并转换。
当时也没想出什么好办法。只是将两次“&”运算拆开,速度提了一倍。还是解决不了问题。
结果就是:for i 1 to 5000 ,i以字符形式相加。用&运算,要300-500ms
现在试试下面这个。建了个cstrcat的类。
程序代码:
class cstrcat 这是类开始。
private i,sa()
public property get value
redim preserve sa(i)
value=join(sa,"")
end property
private sub class_initialize()
i=clng(0)
redim sa(500)
end sub
private sub class_terminate()
erase sa
end sub
public function add(ps)
if len(ps)=0 then exit function
if (i>=ubound(sa)) then upsize
sa(i)=ps
i=i+1
end function
private sub upsize()
dim u
u=ubound(sa)
redim preserve sa(clng(u+u*0.1))
end sub
end class
你可以用这个代码测试一下性能分别:
程序代码:
<%
pageexetime1=timer * 1000 计时开始
set sc=new cstrcat
for i=0 to 5000
sc.add i&"aaaaaa"
next
response.write sc.value
计时结束
response.write ",processed time:" & fix(abs(cdbl(timer)*1000 – pageexetime1))&"ms</font></p>"
pageexetime2=timer * 1000
for i= 0 to 5000
sc2=sc2&i&"aaaaaa"
next
response.write sc2
计时结束
response.write ",processed time:" & fix(abs(cdbl(timer)*1000 – pageexetime2))&"ms</font></p>" %>
