JavaScript字符串数组拼接的性能
来源:互联网 发布:java不带-字符串转日期 编辑:程序博客网 时间:2024/05/22 01:47
传统上,字符串连接一直是js中性能最低的操作之一。
var text="Hello";
text+=" World!";
早期浏览器没有对这种运算进行优化。由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。
发现这一点后,开发者们利用数组对象进行优化。
var buffer=[],i=0;
buffer[i++]="Hello"; //通过相应索引值添加元素比push方法快
buffer[i++]=" World!";
var text=buffer.join("");
在早期的浏览器中,没有创建和销毁中间字符串,在大量字符串连接情况下,这技术已被证明远快于使用加法方式。
如今浏览器对字符串的优化已经改变了字符串相连的局面。Safari、Opera、Chrome、Firefox和IE8都在使用加法运算符上表现出了更好的性能。但是,IE8之前的版本没有优化,因此数组方法依然有效。这并不意味着字符串相连时我们要进行浏览器检测。在决定如何连接时要考虑的是字符串的大小和数量。
当字符串相对较小(小于20字符)且连接数量也较小时(小于1000个),所有的浏览器使用加法运算符都能在不到1毫秒内轻松完成连接。增加字符串数量或大小时,IE7中性能会明显下降。字符串大小增加时,Firefox中加法运算符和数组成技巧性能差异会变小。字符串数量增加时,Safari中加法运算符和数组成技巧性能差异会变小。改变字符串数量或大小时,Chrome和Opera中加法运算符一直保持领先优势。
所以,由于在各浏览器下性能不一致,选用技术取决于实际情况和面对的浏览器。
大多数情况下,加法运算符是首选;如果用户主要使用IE6或7,并且字符串大小较大或数量较多时,那么数组技术就很值得。
一般情况下,如果是语义性的字符串,不应该使用Array,比如
'Hello, my name is ' + name;
如果字符串是"相似情况的重复"的话,建议使用Array,比如
var array = [];
for (i = 0; i < length; i++) {
array[i] = '<li>' + list[i] + '</li'>;
}
document.getElementById('somewhere').innerHTML = array.join('\n');
0 0
- JavaScript字符串数组拼接的性能
- JavaScript字符串数组拼接的性能
- JavaScript字符串拼接的性能问题
- jdk6的Javascript脚本引擎性能简单测试(字符串拼接)
- JavaScript 字符串拼接性能分析小记
- OC 数组,字符串的拼接
- javascript模拟 C#中的StringBuilder,提升JS中字符串拼接的效率及性能
- JAVA的字符串拼接与性能
- JAVA的字符串拼接与性能
- JAVA的字符串拼接与性能
- 字符串拼接的性能问题-StringBuilder
- JAVA的字符串拼接与性能
- JAVA的字符串拼接与性能
- JAVA的字符串拼接与性能
- 关于String 拼接字符串的性能问题
- perl拼接字符串的性能优化
- JAVA的字符串拼接和性能
- JAVA的字符串拼接与性能
- Android4.0编译环境搭建
- 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性
- 机器学习前沿热点–Deep Learning
- RHadoop : Reading CSV using rhdfs
- Solr学习之二:Solr配置文件说明
- JavaScript字符串数组拼接的性能
- 如何在iOS中使用Block──How to use Blocks with iOS
- 高效程序员的 7 个共同特征
- C++ Primer (第四版)勘误
- SQL分页
- 如何为锁屏设置一张不同于launcher的,固定加载的背景图片
- iOS项目开发过程中的目录结构
- 美国程序员如何看伤不起的30岁?
- 背包问题——“完全背包”详解及实现(包含背包具体物品的求解)