数组方法解决JS字符串连接性能问题有争议
2023-06-13 09:14:26 时间
1、传统上,字符串连接一直是js中性能最低的操作之一。
vartext="Hello";
text+="World!";
早期浏览器没有对这种运算进行优化。
由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。
2、发现这一点后,开发者们利用数组对象进行优化。
varbuffer=[],i=0;
buffer[i++]="Hello";//通过相应索引值添加元素比push方法快
buffer[i++]="World!";
vartext=buffer.join("");
在早期的浏览器中,没有创建和销毁中间字符串,在大量字符串连接情况下,这技术已被证明远快于使用加法方式。
3、如今浏览器对字符串的优化已经改变了字符串相连的局面。
Safari、Opera、Chrome、Firefox和IE8都在使用加法运算符上表现出了更好的性能。但是,IE8之前的版本没有优化,因此数组方法依然有效。
这并不意味着字符串相连时我们要进行浏览器检测。在决定如何连接时要考虑的是字符串的大小和数量。
1)当字符串相对较小(<20字符)且连接数量也较小时(<1000个),所有的浏览器使用加法运算符都能在不到1豪秒内轻松完成连接。
2)增加字符串数量或大小时,IE7中性能会明显下降。
3)字符串大小增加时,Firefox中加法运算符和数组成技巧性能差异会变小。
4)字符串数量增加时,Safari中加法运算符和数组成技巧性能差异会变小。
5)改变字符串数量或大小时,Chrome和Opera中加法运算符一直保持领先优势。
所以,由于在各浏览器下性能不一致,选用技术取决于实际情况和面对的浏览器。
大多数情况下,加法运算符是首选;如果用户主要使用IE6或7,并且字符串大小较大或数量较多时,那么数组技术就很值得。
vartext="Hello";
text+="World!";
早期浏览器没有对这种运算进行优化。
由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。
2、发现这一点后,开发者们利用数组对象进行优化。
varbuffer=[],i=0;
buffer[i++]="Hello";//通过相应索引值添加元素比push方法快
buffer[i++]="World!";
vartext=buffer.join("");
在早期的浏览器中,没有创建和销毁中间字符串,在大量字符串连接情况下,这技术已被证明远快于使用加法方式。
3、如今浏览器对字符串的优化已经改变了字符串相连的局面。
Safari、Opera、Chrome、Firefox和IE8都在使用加法运算符上表现出了更好的性能。但是,IE8之前的版本没有优化,因此数组方法依然有效。
这并不意味着字符串相连时我们要进行浏览器检测。在决定如何连接时要考虑的是字符串的大小和数量。
1)当字符串相对较小(<20字符)且连接数量也较小时(<1000个),所有的浏览器使用加法运算符都能在不到1豪秒内轻松完成连接。
2)增加字符串数量或大小时,IE7中性能会明显下降。
3)字符串大小增加时,Firefox中加法运算符和数组成技巧性能差异会变小。
4)字符串数量增加时,Safari中加法运算符和数组成技巧性能差异会变小。
5)改变字符串数量或大小时,Chrome和Opera中加法运算符一直保持领先优势。
所以,由于在各浏览器下性能不一致,选用技术取决于实际情况和面对的浏览器。
大多数情况下,加法运算符是首选;如果用户主要使用IE6或7,并且字符串大小较大或数量较多时,那么数组技术就很值得。
相关文章
- 【说站】js创建构造函数的注意点
- 【说站】js中let和var的区别
- js中四舍五入的方法_JS取整
- JS金额格式化详解编程语言
- js方法将系统当前时间转换为字符串详解编程语言
- js动态往对象里边添加一项详解编程语言
- JS removeChild()方法:删除节点
- JS getAttribute()方法:读取元素的属性值
- JS元素节点及其常用属性和方法
- JavaScript实现Oracle数据库连接与操作(js怎么连接oracle)
- Oracle中JS的优势让数据库性能提升(oracle中 js)
- 一段非常简单的让图片自动切换js代码
- JavaScript入门教程(3)js面向对象
- js小贴士一星期合集
- 限制文本框输入N个字符的js代码
- js正则表达式之search方法讲解
- js数组Arraysort方法使用深入分析
- 为高负载网络优化Nginx和Node.js的方法
- JS去除右边逗号的简单方法
- 网页计算器一个JS计算器
- JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
- js实现动态改变字体大小代码
- js与jquery获取父级元素,子级元素,兄弟元素的实现方法
- 通过隐藏iframe实现文件下载的js方法介绍
- node.js中的fs.symlink方法使用说明
- node.js中的fs.renameSync方法使用说明
- PHP采集静态页面并把页面css,img,js保存的方法
- js使用html()或text()方法获取设置p标签的显示的值