一个利用正则表达式进行代码重构,去除冗余代码的例子
refact之前:大量的重复代码
refact之后:用map消除了重复代码。
现在的分支里每次执行检查都要先 var usRegx = /XXXX/. 实际上通过字面量定义了一个正则表达式对象,开销比定义一个String大。其实没必要每次都定义,可以把map定义在controller的一个全局属性上。
执行这段代码就可看出字符串常量和正则表达式字面量的性能差异:
var N = 100000000; console.time("normal string"); for( var i = 0; i < N; i++){ var a = "a"; } console.timeEnd("normal string"); console.time("regular exp"); for( var i = 0; i < N; i++){ var b = /^[0-9]{5}$|^[0-9]{5}-[0-9]{4}$/; } console.timeEnd("regular exp");
本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SAP BOPF和Spring框架里加了注解的控制器是如何被调用的
BOPF的这些determination,其方法不需要application developer自己去调用,而是被BOPF框架通过调用interface method的方式被调用。Spring MVC的@RequestMapping工作原理类似,但实现方式稍稍高级点,用的是Java的反射。 ProductPageController这个类的productDetail方法加上了@RequestMapping, 参数是: 当我点了product list上某个product的image想进入detail page时: 这个包含了p的url就会被Spring MVCdelegate到我通过@RequestMapping注册的controller class上。从debugger里能看出我的controller class已经被成功地determine出来了。所以从本质上讲,@RequestMapping和在ABAP里常用的把CLAS名字配到表里的方法其目的都一样:注册,只是Annotation更加优雅和简便一点而已。 扫描原理见我博客:A simulation of Java Spring ...
- 下一篇
SAP ABAP SM50事务码和Hybris Commerce的线程管理器
ABAP的SM50查看当前server可用的dialog process。 Hybris 查看某个thread当前detail状态: "TaskExecutor-junit-3459-TriggerTask [8796093416374]" prio=5 tid=0x3459 nid=0xd83 TIMED_WAITING - stats: cpu=0 blk=-1 wait=-1java.lang.Thread.State: TIMED_WAITING at sun.misc.Unsafe.park(Native Method) parking to wait for java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@3f5b1c05 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$Cond...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装