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,字符串,性能优化
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
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
![](https://img.aspxhome.com/file/2023/5/71725_0s.png)
C++与mysql连接遇到的问题汇总
2024-01-18 03:14:46
一个二级伸缩下拉菜单代码
2008-06-24 18:12:00
python自动化测试通过日志3分钟定位bug
2021-09-12 10:11:19
![](https://img.aspxhome.com/file/2023/4/90844_0s.png)
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
![](https://img.aspxhome.com/file/2023/0/126870_0s.jpg)
Tensorflow之MNIST CNN实现并保存、加载模型
2023-10-16 06:21:33
![](https://img.aspxhome.com/file/2023/7/65877_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/7/130037_0s.jpg)
举例简单讲解Python中的数据存储模块shelve的用法
2022-10-12 04:23:55