JavaScript 字符串匹配性能比较

转载自:http://hi.baidu.com/likeytom/item/70c7a3290df548c2ee10f11e

在JavaScript中进行字符串的匹配有几种方法,一种是用indexOf函数匹配 子符串,它的参数是一个子字符串substr和一个String对象内开始查找的索引starIndex,当有匹配的字符时返回String对象内第一次 出现字符的位置,另一种方法就是采用正则表达式,JavaScript中正则表达式是通过RegExp类实现的。
    因为需要,我们需要用一些关键词与网页的内容进行匹配,看有哪些关键词与文中内容匹配上了,由于关键词的数目较多,因而对于这些关键词与文中内容的匹配的 效率的要求很高,必须采用一种较快快的匹配方式,这里我一个实验,采用javaScript内部的indexOf函数和RegExp正则两种方来测试,测 试的文本是一个4K大小的中文网页,测试的浏览器有firefox和IE。测试结果如下:

类别

FireFox匹配时间(毫秒)

IE匹配时间(毫秒)

关键字数(个)

备注

indexOf

11047

5610

1050

表内数据是对同一关键词组对同一文本的匹配对比情况

测试环境C

Memory XP sp2

indexOf

警告

6953

1200

RegExp

813

650

1050

RegExp

954

766

1200

RegExp

1141

875

1500

RegExp

1672

1250

2100

RegExp

2406

1781

3000

RegExp

3727

2657

4000

RegExp

5312

3516

6000

RegExp

8859

5766

10000

RegExp

281

1050

利用IE的innerText进行全文匹配

406

1500

797

3000

2657

10000

根据测试的结果看出,正则表达式的匹配速度相比较于indexOf字符串函数性能要快10倍左右,IE相对于firefox性能优1.5倍左右,我们对网页的内文本的处理方式是采用针对各个段落分别处理,主要是由于firefox不支持innerText属性的原因,在针对IE的innerText对整个body内的元素进行一次性的正则匹配,其性能相对于分别对段落匹配要提高1倍左右。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值