可vbs根本就没有类似于StringBuilder这样的东东,所以咱哥们只能自己想办法优化了。
正文:
我写了几段代码做了测试,得出以下结果:
'普通字符串连接
StringLinkTest1() '性能最差,大约耗时20秒(最要命的是在这20秒内,整个CPU几乎是100%满负荷在运行)
'普通字符串连接,但使用了临时变量来提升效率
StringLinkTest2() '性能令人吃惊的改善,大约耗时0.2秒
'使用数组+Join函数处理
StringArrayTest() '性能最佳,大约耗时0.06秒
'本来还有个方法,是利用字典对象:Scripting.Dictionary 来操作的,但由于在大量连续使用的类方法的情况下,会直接影响效率(效率介于StringArrayTest和StringLinkTest2之间),在此就不贴了
得出的结果就是,在vbs的字符串处理上,还是可以解决效率问题的。
代码如下:
复制代码 代码如下:
<%
'vbs版高速字符串操作代码演示
'淮南子编写
Option explicit
Dim StrTime,EndTime
Dim MyString,MyArray,ArrayIndexCount,CurIndex
Const TestNumber = 9999 '循环次数
StrTime = Timer()
'============测试开始============
'代码执行效率
'本人机器配置:
'CPU: 酷睿双核2250 CPU频率:1.73G
'内存: 1GB
'请逐一开启方法进行测试
'StringLinkTest1() '性能最差,大约耗时20秒
'StringLinkTest2() '性能大大改善,大约耗时0.2秒
'StringArrayTest() '性能最佳,大约耗时0.06秒
'============测试结束============
'输出结果
'Response.Write MyString
EndTime = Timer()
Response.Write "耗时:" & FormatNumber((EndTime-StrTime) * 1000,3) & " 毫秒"
'字符串操作函数,淮南子原创
Sub Add(Value)
If (CurIndex >= ArrayIndexCount) Then
ArrayIndexCount = CurIndex * 1.1 '如果欲添加项超出数组下标,则将数组容量扩增百分之10
ReDim Preserve MyArray(ArrayIndexCount)
End If
MyArray(CurIndex) = Value
CurIndex = CurIndex + 1
End Sub
'测试方法
'使用数组进行字符串叠加,在所有方法中,该方法性能最佳(效率较StringLinkTest2()的方法提升了近4倍)
Sub StringArrayTest()
ArrayIndexCount = 20
CurIndex = 0
ReDim MyArray(ArrayIndexCount)
Dim i
For i = 0 to TestNumber
Add "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Next
MyString = Join(MyArray,"")
End Sub
'测试方法1
'常规的字符串连接
Sub StringLinkTest1()
Dim i,str
dim a1
a1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
For i=0 to TestNumber
'常规字符串连接
Str=(Str&a1)
Next
MyString = Str
End Sub
'测试方法2
'在常规的字符串连接方式中,使用临时变量来提速 ,效率较StringLinkTest1()的方法提升了近100倍
Sub StringLinkTest2()
Dim i,str,a1,TmpString
a1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
For i=0 to TestNumber
'使用临时变量提速
TmpString = (TmpString & a1)
'每二百次则进行一次累计
If i mod 200 = 0 Then
'保存临时变量值
Str = (Str & TmpString)
'清空临时变量值
TmpString = ""
End If
Next
if TmpString<>"" Then MyString = (Str & TmpString)
End Sub
%>
如有不对之处,请大家拍拍砖,呵呵
也可以用数组来拼接字符串啦! 复制代码 代码如下:
'最简单的例子,生成num个重复的str,例如 XString(5,"<br>") '输出: <br><br><br><br><br>
Function XString(num,str)
On Error Resume Next
Dim i,a
Redim a(num-1)
For i=0 To num-1
a(i)=str
Next
XString=Join(a,"")
On Error GoTo 0
End Function
'字符串拼接类公共版
Class clsStrCat
Private aFStrings()
Private iFSPos,iFSLen,iFSIncr
Private Sub Class_Initialize()
On Error Resume Next
iFSIncr = STRCATBUF
If Err Then iFSIncr = 200 : Err.Clear
Reset
On Error GoTo 0
End Sub
Private Sub Class_Terminate()
Erase aFStrings
End Sub
Public Property Let Item(ByRef sData)
If iFSPos > iFSLen Then
iFSLen = iFSPos + iFSIncr
ReDim Preserve aFStrings(iFSLen)
End If
aFStrings(iFSPos) = sData
iFSPos = iFSPos + 1
End Property
Public Default Property Get Item()
Item = Join(aFStrings, "")
End Property
Public Sub Reset()
iFSPos = 0
iFSLen = iFSIncr
ReDim aFStrings(iFSLen)
End Sub
Public Sub Resize(n)
If Not IsNumeric(n) Then Exit Sub
iFSPos = 0
iFSIncr = n
iFSLen = iFSIncr
ReDim aFStrings(iFSLen)
End Sub
Public Property Get Strs()
Strs=aFStrings
End Property
Public Property Get Count()
Count=iFSPos
End Property
Public Property Get IsInit()
If iFSPos=0 Then IsInit=True Else IsInit=False
End Property
End Class
相关推荐:
AI自动读文:让阅读更轻松、更高效的智能革命,寄ai空
ChatGPT页面不自动显示最新消息:如何解决这一困扰,提升使用体验?,斑马ai幼儿百度云网盘
ChatGPT常见问题汇总:解答你关于AI的一切疑惑,松鼠ai智能教适应教育
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
SEO总结:如何通过优化提升网站排名与流量,关键词排名消失
什么是seo平台seo教程,什么是 seoseo有何价值 ,论文写作ai助手公众号
优化,让生活与工作更高效-从个人到企业的全面升级,广州百度seo费用
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
什么是seo概念,什么是seo,sem ,ai音标谐音
自动写文章的AI,提升效率的创作利器
AI免费生成文字,打造创作新时代
SEO能够助力网站流量增长,提升品牌竞争力,Seo网站排名原理
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
ChatGPT对于大数据发展的帮助:赋能行业变革,推动智能化未来,ai写作真的好吗
《“查看更多”背后的秘密:让你的人生更加丰富多彩!》,宁安公司网站建设
文章AI思维导图自动生成助力创作的智慧之源
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
2025百度收录优化:提升网站排名,助力企业数字化转型,第一ai做
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译
用AI写文章:效率与创意的完美结合
SEO站内优化:提升网站排名的核心策略,厦门市网站优化企业
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
Chat免费,让沟通无界限,尽享智能对话时代,ai没办法置顶
ChatGPT不登录,如何畅享AI的智能服务?,手信ai
seo网络上什么意思,seo表示什么 ,如何避免今日头条ai写作检测
AI人工智能:改变未来的科技革命
文章AI指令提升写作效率的智能助手
ChatGPT中文版下载免费版:智能对话新时代,尽在,ai光波
怎么用AI生成文章免费版,高效创作从此开始!
ChatGPT40不收费版本:科技革新,智能助手助力生活与工作,ai医疗武器有哪些
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
SEO快排还有效果吗揭秘快速排名的真相与未来趋势,ai人像波普
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
ChatGPT支付时银行卡被拒绝?教你几招轻松解决问题!,国内ai换图
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
整理文章的AI:提升写作效率的智能助手
seo涉及什么内容,seo主要包括 ,法医使用ai
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
SEO努力:提升网站排名的关键策略,网站建设微企动力
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
SEO站群:打造强大网络营销引擎,助力企业快速提升排名与流量,seo网站排名案例