专栏首页Jerry的SAP技术分享一个利用正则表达式进行代码重构,去除冗余代码的例子
原创

一个利用正则表达式进行代码重构,去除冗余代码的例子

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");

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接

    async用来表示函数是异步的,定义的函数会返回一个promise对象,可以使用then方法添加回调函数。

    Jerry Wang
  • 批量导出某个简书用户的所有文章列表和文章超链接

    虽然简书提供了批量下载文章的功能,但是下载到本地的文章都是markdown格式的,不包含文章的链接,这不满足我的需求。

    Jerry Wang
  • 纯粹依靠位操作实现整数加法运算

    Jerry Wang
  • Percona-tookit学习笔记(四)

        从log文件中读取插叙语句,并用explain分析他们是如何利用索引。完成分析之后会生成一份关于索引没有被查询使用过的报告。

    二狗不要跑
  • Go语言之旅:变量、常量及类型

    因为面向dotnet(C#)的程序员有很多基础语言的知识已经具备,在这一节,我会把那些Golang特别的或者需要注意的部分摘出来,加以演示可能会更快上手和了解。...

    杨子翔 josonyang
  • Destructuring assignment

    also provide support for default values, assigning to new variable names

    gojam
  • 第13章 Kotlin 集成 SpringBoot 服务端开发(2)

    其中,ON DUPLICATE KEY UPDATE 这句表明当遇到重复的键值的时候,执行更新 gmt_modified = now() 的操作。这里nativ...

    一个会写诗的程序员
  • JavaScript面试题补充(1---5)

    在IT界中,JavaScript开发人员的需求量一直居高不下。如果你的能力能够胜任这一角色,那么你有很多机会换一家公司,并提高薪水。但在你被一家公司聘用之前,你...

    用户1272076
  • 5个经典的JavaScript面试题

    在IT界中公司对JavaScript开发者的要求还是比较高的,但是如果JavaScript开 发者的技能和经验都达到了一定的级别,那他们还是很容易跳到优秀的公司...

    wangxl
  • JS中const、var 和let的区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。 1.const定义...

    李文杨

扫码关注云+社区

领取腾讯云代金券