JavaScript 字符串连接性能优化

 更新时间:2008年12月20日 15:23:19   作者:  
从多次测试结果看来,使用StringBuffer 可以节省50%以上的时间
复制代码 代码如下:

var str = "hello";
str += " world";

后台所做工作:
1)创建存储 "hello" 的字符串,且使 str 指向它。
2)创建存储 "world" 的字符串。
3)创建存储结果的字符串。
4)将 str 中的当前内容复制到结果字符串中。
5)把 world 复制到结果字符串中。
6)更新 str ,使 str 指向结果字符串。
每拼接一次字符串就循环重复2)~6),如果重复成百上千次则会非常消耗资源,影响性能。
解决方法:
使用 Array 对象存储字符串,之后使用 join()方法输出结果。
仿照 Java 中的 StringBuffer 类。
复制代码 代码如下:

function StringBuffer(){
this._strings = new Array;
}
StringBuffer.prototype.append = function (str){
this._strings.push(str);
}
StringBuffer.prototype.toString = function (){
return this._strings.join("");
}

测试性能:
代码1:使用 "+=" 拼接字符串
复制代码 代码如下:

var d = new Date();
var str = "";
for(var i=0;i<10000;i++){
str += "test";
}
var d2 = new Date();
document.writeln(d2.getTime()-d.getTime());

代码2:使用 StringBuffer
复制代码 代码如下:

var d = new Date();
var str = new StringBuffer();
for(var i=0;i<10000;i++){
str.append("test");
}
var res = str.toString();
var d2 = new Date();
document.writeln(d2.getTime()-d.getTime());

从多次测试结果看来,使用StringBuffer 可以节省50%以上的时间。

相关文章

  • JavaScript 函数节流详解及方法总结

    JavaScript 函数节流详解及方法总结

    这篇文章主要介绍了JavaScript 函数节流详解及实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • 表格头固定而列可滚动的效果

    表格头固定而列可滚动的效果

    表格头固定而列可滚动的效果...
    2007-11-11
  • 一文学习JavaScript 使用误区

    一文学习JavaScript 使用误区

    在 JavaScript 程序中如果你在 if 条件语句中使用赋值运算符的等号 (=) 将会产生一个错误结果, 正确的方法是使用比较运算符的两个等号 (==),这篇文章主要介绍了一文学习JavaScript 使用误区,需要的朋友可以参考下
    2023-02-02
  • JS与SQL方式随机生成高强度密码示例

    JS与SQL方式随机生成高强度密码示例

    这篇文章主要介绍了JS与SQL方式随机生成高强度密码,结合实例形式分析了javascript方式与SQL方式生成高强度密码的相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 浅谈JS的基础类型与引用类型

    浅谈JS的基础类型与引用类型

    下面小编就为大家带来一篇浅谈JS的基础类型与引用类型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • window.onload使用指南

    window.onload使用指南

    我们经常使用 window.onload 来处理页面,当页面加载完成做一些事情。但这个 window.onload 是页面全部加载完成,甚至包括图片,下面我们就来详细探讨下window.onload的用法
    2015-09-09
  • JS常见构造模式实例对比分析

    JS常见构造模式实例对比分析

    这篇文章主要介绍了JS常见构造模式,结合实例形式对比分析了工厂模式、构造函数模式、原型模式、寄生构造函数模式、稳妥构造函数模式等相关概念、原理、实现方法与相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • JavaScript实现手写call/apply/bind的示例代码

    JavaScript实现手写call/apply/bind的示例代码

    这篇文章主要为大家详细介绍了JavaScript实现手写call/apply/bind的方法,文中的示例代码讲解详细,对我们学习JavaScript有一定的帮助,需要的可以参考一下
    2023-02-02
  • layui监听select变化,以及设置radio选中的方法

    layui监听select变化,以及设置radio选中的方法

    今天小编就为大家分享一篇layui监听select变化,以及设置radio选中的方法,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 30分钟快速掌握Bootstrap框架

    30分钟快速掌握Bootstrap框架

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。接下来通过本文给大家介绍如何快速掌握Bootstrap,感兴趣的朋友一起学习吧
    2016-05-05

最新评论