打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
效率低下的Split函数,用VBS的人你伤不起

效率低下的Split函数,用VBS的人你伤不起

标签: , , , , ,

曾经写过一篇《VBS中字符串连接的效率问题》,里面的主角是Join函数,效率是很高的,然而Join的反函数Split函数的表现就有些不尽如人意了。

Dim arr(999999)For i = 0 To 999999    arr(i) = iNext'Author: Demon'Website: http://demon.tw'Email: 380401911@qq.comt = Timerstr = Join(arr, ",")WScript.Echo Timer - tt = Timera = Split(str, ",")WScript.Echo Timer - t

先用Join生成一个很长的字符串(如果写入文件的话,有6M多),然后再用Split分割成数组。Join用了0.726秒就完成了,而Split,我等啊等啊,用了16.023秒才分割完。Split函数大约的确有点慢,有人提供了一种用正则表达式的方法:

'Author: Demon'Website: http://demon.tw'Email: 380401911@qq.com'前半部分省略t = Timerstr = str & ","Set regex = New RegExpregex.Global = Trueregex.Pattern = "([^,]*),"Set ms = regex.Execute(str)Dim b() : ReDim b(ms.Count - 1)For i = 0 To ms.Count - 1    b(i) = ms.Item(0).Submatches(0)NextWScript.Echo Timer - t

用了8.703秒,差不多比Split快了一倍。然而,同样是split,JScript只需要几百毫秒,也就是零点几秒:

var arr = [];for (var i = 0; i <= 999999; i++)    arr.push(i);str = arr.join(",");/* * Author: Demon * Website: http://demon.tw * Email: 380401911@qq.com */t = new Date;a = str.split(",");WScript.Echo((new Date) - t);

在我初学VBS的时候,看过UMU的一篇文章《VBS 比 JS 快?》,那时什么也不懂。不久前测试了一下他上面给出的代码,发现在Windows 7下两组程序都是JS比VBS要快,其他系统没有测试。虽然UMU说他测试的结果是VBS比JS快,但是我表示怀疑。至少就split而言,JScript已经远远超越了VBScript,用VBS的人你伤不起。

延伸阅读:关于split和instr效率问题的实验研究

随机文章:

  1. 用VBS检测U盘插入和弹出事件(二)
  2. VBS模拟POST上传文件
  3. VBS实现半角字符转全角字符
  4. 死与重生
  5. IsTextUnicode函数
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBS中CreateObject和WScript.CreateObject的区别
asp.net中split的用法.html
字符串拆分、去重、合并,你会吗?
php分割函数
php支持中文字符串分割的函数
C#中的Split()函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服