JavaScript 字符串连接性能优化

时间:2024-05-11 09:35:53 


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,字符串,性能优化
0
投稿

猜你喜欢

  • Mysql索引创建删除及使用代价

    2024-01-16 15:32:35
  • Python StringIO模块实现在内存缓冲区中读写数据

    2021-12-22 08:23:13
  • Python-openCV开运算实例

    2022-06-18 18:53:35
  • Django处理文件上传File Uploads的实例

    2023-07-18 13:44:23
  • php实现的单一入口应用程序实例分析

    2023-11-22 08:00:26
  • python控制nao机器人身体动作实例详解

    2023-08-26 11:33:17
  • 详解Python 装饰器执行顺序迷思

    2023-12-30 23:55:23
  • SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)

    2024-01-21 19:53:06
  • C++与mysql连接遇到的问题汇总

    2024-01-18 03:14:46
  • 一个二级伸缩下拉菜单代码

    2008-06-24 18:12:00
  • python自动化测试通过日志3分钟定位bug

    2021-09-12 10:11:19
  • C# 如何调用python脚本

    2023-11-26 19:06:47
  • go语言LeetCode题解1030距离顺序排列矩阵单元格

    2024-05-22 10:09:19
  • d3.js实现简单的网络拓扑图实例代码

    2024-05-09 10:19:58
  • Tensorflow之MNIST CNN实现并保存、加载模型

    2023-10-16 06:21:33
  • keras分类模型中的输入数据与标签的维度实例

    2022-01-30 02:12:43
  • Python 文件操作的详解及实例

    2021-06-05 12:59:12
  • UE、UI、UCD、Interaction Design、UED、UX、HCI、Usability,IA

    2022-09-11 04:22:56
  • vue 使用微信jssdk,调用微信相册上传图片功能

    2024-05-02 17:09:36
  • 举例简单讲解Python中的数据存储模块shelve的用法

    2022-10-12 04:23:55
  • asp之家 网络编程 m.aspxhome.com