摘要:在字符串中搜索子字符串,是最基本的操作之一,我们经常会遇到,我通常做的是,查看代码中的其他地方,看看其他人都做了什么,然后做同样的事情现在,我只是想提出一些最常用的选项,以及它们之间的性能比较,以防您关心性能,以便当涉及到将来的选择时,您知
在字符串中搜索子字符串,是最基本的操作之一,我们经常会遇到,我通常做的是,查看代码中的其他地方,看看其他人都做了什么,然后做同样的事情!现在,我只是想提出一些最常用的选项,以及它们之间的性能比较,以防您关心性能,以便当涉及到将来的选择时,您知道哪一个是更好的选择!代码展示
下面是我在搜索字符串时经常看到的6种不同的方法:
// 1. includes (introduced in ES6) var string = "string to search for substring", substring = "sea"; string.includes(substring); // 2. RegExp: test var string = "string to search for substring", expr = /sea/; // no quotes here expr.test(string); //3. string.search var string = "string to search for substring", expr = "/sea/"; string.search(expr); //4. lodash: includes var string = "string to search for substring", substring = "sea"; _.includes(string, substring); // 5. string.match var string = "string to search for substring", expr = "/sea/"; string.match(expr); // 3. string.indexOf var string = "string to search for substring", substring = "sea"; string.indexOf(substring) !== -1;性能基准测试
如果你想知道,给出一个一般长度的字符串,哪个会表现得更好,regex.test是最快的,其次是string.search(libraries by ES6),第三位属于string.indexof方法:
前往测试页面 →
如果放大测试字符串的规模会怎么样?
我缩放这个字符串,把它放大1000倍(100万字符,甚至1000万字符),我看到string.indexof是一个赢家,虽然不是很多!
下面这是我的基准测试的结果,我创建了1~1000万个字符的字符串来进行测试
基准测试非常大的字符串,并重复子字符串1000次:
前往测试页面 →
译者注:这个链接提供的测试内容感觉跟作者描述的测试内容不符,可能链接是错的
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110307.html
摘要:性能访问字面量和局部变量的速度是最快的,访问数组和对象成员相对较慢变量标识符解析过程搜索执行环境的作用域链,查找同名标识符。建议将全局变量存储到局部变量,加快读写速度。优化建议将常用的跨作用域变量存储到局部变量,然后直接访问局部变量。 缺陷 这本书是2010年出版的,这本书谈性能是有时效性的,现在马上就2018年了,这几年前端发展的速度是飞快的,书里面还有一些内容考虑IE6、7、8的东...
摘要:作用域链查找作用域链的查找是逐层向上查找。而全局变量和闭包则会与之相反,继续保存,所以使用用后需手动标记清除,以免造成内存泄漏。获取元素的属性获取元素的属性等参考文档高级程序设计作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVburXV?w=500&h=399); 作用域链查找 作用域链的查找是逐层向上查找。查...
摘要:当执行上下文被创建时,它的作用域链初始化为当前运行函数的属性中的对象。该过程搜索执行环境的作用域链,查找同名的标识符。搜索实例成员比从字面量或局部变量中读取数据代价更高,再加上遍历原型链带来的开销,这让性能问题更为严重。 最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践、性能优化类的书。记录下主要知识。 加载和执行 脚本位置 放在中的...
阅读 3812·2021-11-24 09:39
阅读 3731·2021-11-22 12:07
阅读 1085·2021-11-04 16:10
阅读 770·2021-09-07 09:59
阅读 1875·2019-08-30 15:55
阅读 913·2019-08-30 15:54
阅读 706·2019-08-29 14:06
阅读 2450·2019-08-27 10:54