JavaScript 字符串连接性能优化
发布时间:2024-05-11 09:35:53
标签:JavaScript,字符串,性能优化
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%以上的时间。


猜你喜欢
- 前几天要写一个东西里面有用到读文件的。 可是我不想用FSO,我怕有的空间不支持。 &nbs
- unittest是python的一个单元测试框架关于断言它是用于对一个确定结果和预测结果的一种判断,如果结果正确无任何返回效果,如果结果错误
- Python3视频转字符动画,具体代码如下所示:# -*- coding:utf-8 -*-import jsonimport osimpo
- 一、matplotlib 库一个用来绘图的库import matplotlib.pyplot as plt1)plt.imread(&
- 这个符合设计标准的三 级向上弹出菜单,纯css代码控制,没有使用javascript脚本,绿色环保,呵呵。兼容性应该更好。截图:<!D
- 在安装wordpress的时候,按照里面的readme.html的步骤进行安装,但是在访问wp-admin/install.php的时候就出
- 今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束。所以我决定写个爬
- 当你的查询相对简单的时候,每次从头开始创建SQL语句也不费什么工夫,不过,复杂的查询就不同了,每次都从头来会产生很多开发错误。因此,一旦让S
- 本文实例为大家分享了javascript实现简单计算器的具体代码,供大家参考,具体内容如下设计一个简单的计算器代码 <body>
- jquery模拟SELECT框,效果图如下: <!DOCTYPE html> <html lang="
- 信息交换用汉字编码字符集-基本集 汉字标准交换码共分两级。第一级为常用字,有3755字,按汉语拼音字母顺序排列,第二级为次常用字,有3008
- 一、概述任务描述:开发一个程序,用于获取局域网中开启snmp服务的主机ip地址列表,并写入相应文件以便其它程序使用。背景知识:SNMP是基于
- 实验介绍此次实验帮助大家利用 OpenCV 去读取摄像头的视频流,你可以直接使用笔记本本身的摄像头,也可以用 USB 连接直接的摄像头。如果
- window.close(); 关闭浏览器窗口js代码的总结介绍序号关闭代码需要确认无任何作用无需确认测试1window.close()IE
- 需求一般Django开发为了保障避免 csrf 的攻击,如果使用Django的模板渲染页面,那么则可以在请求中渲染设置一个csrftoken
- 1. 想学asyncio,得先了解协程携程的意义:计算型的操作,利用协程来回切换执行,没有任何意义,来回切换并保存状
- //采用对象冒充的方式实现js继承 function A(color) { this.Acolor = color; this.AshowC
- 求0到1之间的随机数使用random模块中的random()函数,作用就是返回一个[0,1)之间的随机数。import randomprin
- 1、开发环境运行项目python mange.py runserver 0.0.0.0:80002、使用gunicorn在生产环境部署Gun
- 写在前面这次的爬虫是关于房价信息的抓取,目的在于练习10万以上的数据处理及整站式抓取。数据量的提升最直观的感觉便是对函数逻辑要求的提高,针对