没有合适的资源?快使用搜索试试~ 我知道了~
java performance4
需积分: 10 5 下载量 166 浏览量
2010-02-27
15:24:34
上传
评论
收藏 2KB TXT 举报
温馨提示
试读
2页
java performance4java performance4java performance4
资源推荐
资源详情
资源评论
3. 不恰当的字符串查找匹配
在java中,进行字符串查找匹配时一般有三种实现方式:第一种是调用String对象的indexOf(String str)方法;第二种是调用String对象的matches(String regex)方法;第三种是直接使用正则表达式工具类(包括Pattern类、Matcher类)来实现匹配。这三种实现方式的各自特点如下:
(1) indexOf(String str)方法运行速度最快,效率最高,但不支持正则表达式。
(2) matches(String regex)方法性能最差,但支持正则表达式,使用起来简单(该方法性能差的原因是每调用一次时,就重新对正则表达式编译了一次,新建了一个Pattern对象出来,而不是重复利用同一个Pattern对象)。
(3) 直接使用正则表达式工具类来实现匹配,可以支持正则表达式,在频繁操作下性能比matches(String regex)方法要好很多。
以下是对三种查找匹配实现方式的性能测试代码:
String s0="abcdefghjkilmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s1="890ABCDE";
Pattern p = Pattern.compile(s1);
Matcher m = p.matcher(s0);
int loop=1000000;
long start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
s0.indexOf(s1); //通过String对象的indexOf(String str)方法实现查找匹配
}
long end=System.currentTimeMillis();
long time1=end-start;
start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
s0.matches(s1); //通过String对象的matches(String str)方法实现查找匹配
}
end=System.currentTimeMillis();
long time2=end-start;
start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
在java中,进行字符串查找匹配时一般有三种实现方式:第一种是调用String对象的indexOf(String str)方法;第二种是调用String对象的matches(String regex)方法;第三种是直接使用正则表达式工具类(包括Pattern类、Matcher类)来实现匹配。这三种实现方式的各自特点如下:
(1) indexOf(String str)方法运行速度最快,效率最高,但不支持正则表达式。
(2) matches(String regex)方法性能最差,但支持正则表达式,使用起来简单(该方法性能差的原因是每调用一次时,就重新对正则表达式编译了一次,新建了一个Pattern对象出来,而不是重复利用同一个Pattern对象)。
(3) 直接使用正则表达式工具类来实现匹配,可以支持正则表达式,在频繁操作下性能比matches(String regex)方法要好很多。
以下是对三种查找匹配实现方式的性能测试代码:
String s0="abcdefghjkilmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s1="890ABCDE";
Pattern p = Pattern.compile(s1);
Matcher m = p.matcher(s0);
int loop=1000000;
long start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
s0.indexOf(s1); //通过String对象的indexOf(String str)方法实现查找匹配
}
long end=System.currentTimeMillis();
long time1=end-start;
start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
s0.matches(s1); //通过String对象的matches(String str)方法实现查找匹配
}
end=System.currentTimeMillis();
long time2=end-start;
start=System.currentTimeMillis();
for(int i=0;i<loop;i++)
{
资源评论
yangdongxin
- 粉丝: 0
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功