加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【性能优化】高效代码篇(1)

发布时间:2020-12-14 05:50:53 所属栏目:百科 来源:网络整理
导读:一、字符串 1 .使用String.intern()来节约内存 2 .长字符串拼接,显示的使用StringBuilder,来提高字符串的拼接性能 ? 二、慎重使用正则表达式,比如String.split(“指定一个正则表达式”)方法 在编程语言中,使用的正则表达式库都是基于NFA自动机实现的,而

一、字符串

1.使用String.intern()来节约内存
2.长字符串拼接,显示的使用StringBuilder,来提高字符串的拼接性能

?

二、慎重使用正则表达式,比如String.split(“指定一个正则表达式”)方法

在编程语言中,使用的正则表达式库都是基于NFA自动机实现的,而NFA自动机存在回溯的问题
所以能不用就不用
如何避免回溯,使用懒惰、和独占模式
1.贪婪模式"ab{1,3}c"
正则表达式会匹配尽可能多的内容,回溯
2.懒惰模式"ab{1,3}?c"
尽可能少的重复匹配字符
3.独占模式"ab{1,3}+bc"
正则表达式会匹配尽可能多的内容,不回溯,匹配失败就会结束
优化:
1.少用贪婪,多用独占
2.减少分支选择
如:"(x|y|z)",尽量不使用
其次可以提取共用模式,"(abcd|abef)"->"ab(cd|ef)"
3.减少捕获嵌套
():一个捕获组
(?:exp):不进行捕获
如:"(<input.*?>)(.*?)(</input>)" -> "(?:<input.*?>)(.*?)(?:</input>)"

?

三、ArrayList和LinkedList

1.创建ArrayList对象时,尽量指定初始容量大小,防止扩容导致性能下降
2.ArrayList在不发生扩容的情况下,在集合中间和尾部位置进行新增和删除操作时,ArrayList性能是高于LikedList的
3.集合遍历场景,for(;;)和iterator()两种方式,
for(;;)方式:ArrayList性能高于LinkedList(因为ArrayList支持随机访问;)
iterator()方式:ArrayList性能约等于LinkedList性能
所以,LinkedList请使用迭代器iterator来遍历元素,ArrayList使用for遍历元素

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读