Chinaunix首页 | 论坛 | 博客
  • 博客访问: 642827
  • 博文数量: 76
  • 博客积分: 3091
  • 博客等级: 中校
  • 技术积分: 996
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-11 15:40
个人简介

IT老兵,爱好胡思乱想、读书和交流,2015年底重新回到IT战场,期待再一次“贯穿”。

文章存档

2020年(11)

2018年(1)

2017年(1)

2016年(1)

2015年(1)

2014年(2)

2011年(5)

2010年(2)

2009年(4)

2008年(28)

2007年(20)

我的朋友

分类: 系统运维

2007-09-04 16:15:46

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

类别

FireFox匹配时间(毫秒)

IE匹配时间(毫秒)

关键字数()

备注

indexOf

11047

5610

1050

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

测试环境C2.4G

1G 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

利用IEinnerText进行全文匹配

406

1500

797

3000

2657

10000

 

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

 

IEOperaSafari支持innerText属性

阅读(4739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~