我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vbs的字符串操作的效率分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vbs的字符串操作的效率分析

这篇文章主要介绍“vbs的字符串操作的效率分析”,在日常操作中,相信很多人在vbs的字符串操作的效率分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vbs的字符串操作的效率分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


正文:
我写了几段代码做了测试,得出以下结果:
'普通字符串连接
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

到此,关于“vbs的字符串操作的效率分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vbs的字符串操作的效率分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vbs的字符串操作的效率分析

这篇文章主要介绍“vbs的字符串操作的效率分析”,在日常操作中,相信很多人在vbs的字符串操作的效率分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vbs的字符串操作的效率分析”的疑惑有所帮助!接下来,请跟
2023-06-08

Java字符串操作的示例分析

这篇文章主要介绍了Java字符串操作的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。✨字符, 字节与字符串????字符与字符串字符串内部包含一个字符数组,String
2023-06-25

MySQL 字符串拆分操作(含分隔符的字符串截取)

无分隔符的字符串截取 题目要求 数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_t
2022-05-22

Python Hello World和字符串操作的实例分析

Python Hello World和字符串操作的实例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。开那么,让我们开始吧!如果你糊涂了,我建议你在单独的选项卡中打开下面
2023-06-17

Java字符串拼接效率分析及怎么实践

Java字符串拼接效率分析及怎么实践,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java连接字符串有多种方式,比如+操作符,StringBuilder.append方法,这些
2023-06-17

Python中字符串的操作

用单引号或者双引号包含的内容不支持直接在内存中修改可支持索引、切片、成员检查、长度查看 字符串赋值到变量str1 = 'hello world' 字符串打印查看str1 = 'hello world'print(str1) 字符串长度打印s
2023-01-30

Python字符串的字符转换、字符串劈分、字符串合并问题分析

这篇文章主要介绍了Python字符串的字符转换、字符串劈分、字符串合并,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-20

python字符串的基础操作

本篇内容介绍了“python字符串的基础操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 处理字符串原始字符串:在字符串开始的引号之前加
2023-06-02

C#字符串的操作步骤

这篇文章主要介绍“C#字符串的操作步骤”,在日常操作中,相信很多人在C#字符串的操作步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#字符串的操作步骤”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!在C
2023-06-17

Linux strcat函数:字符串操作的全面解析

strcat 是一个 C 语言库函数,用于将两个字符串连接在一起函数原型:char *strcat(char *dest, const char *src);参数:dest:指向目标字符串的指针,该字符串将被追加到源字符串的末尾。目标字
Linux strcat函数:字符串操作的全面解析
2024-09-14

不同语言中字符串操作与Go语言字符串操作的差异

go 语言字符串操作的特点:使用 utf-8 编码表示字符串用 + 运算符拼接字符串用 [] 操作符索引字符串用 [start:end] 语法切片字符串用 == 运算符比较字符串字符串操作 - Go 语言 vs. 其他语言序言处理字符串
不同语言中字符串操作与Go语言字符串操作的差异
2024-04-13

Linux strcat函数:字符串操作的内存分配

strcat 是一个 C 语言库函数,用于将两个字符串连接在一起这里有一个简单的例子来说明如何使用 strcat 函数:#include#includeint main() {char str1[
Linux strcat函数:字符串操作的内存分配
2024-09-14

Python字符数据操作的示例分析

这篇文章将为大家详细讲解有关Python字符数据操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。字符串操作字符串 + 运算符+运算符用于连接字符串,返回一个由连接在一起的操作数组成的字符串。>
2023-06-29

Python数字或字符串的补零操作

这篇文章主要讲解了“Python数字或字符串的补零操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python数字或字符串的补零操作”吧!有时候在使用 Python 的时候,想要对一个数字
2023-06-20

如何分析Java字符串的比较,查找及替换等操作

如何分析Java字符串的比较,查找及替换等操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录