js字符串连接效率问题

问题描述

js字符串连接效率问题
    function StringBuffer() {
    this.__strings__ = new Array;    //这里也可以去掉括号
}
StringBuffer.prototype.append = function (str) {
    this.__strings__.push(str);
}
StringBuffer.prototype.toString = function () {
    return this.__strings__.join("");
}
/*
var buffer = new StringBuffer();
buffer.append("hello");
buffer.append("world");
var result = buffer.toString();*/

//用"+"号连接
var d1 = new Date();
var str = "";
for(var i = 0; i < 10000; i++) {
    str += "text";
}
var d2 = new Date();

document.write((d2.getTime() - d1.getTime()));

//用join方法
var oBuffer = new StringBuffer();
var d3 = new Date();
for(var i = 0; i < 10000; i++) {
    oBuffer.append("text");
}
var aResult = oBuffer.toString();
var d4 = new Date();

document.write("<br/>" + (d4.getTime() - d3.getTime()));

居然用“+”连接字符串花的时间比用join的时间短,奇怪了

时间: 2024-09-13 02:44:12

js字符串连接效率问题的相关文章

js字符串连接代码与注意事项及效率

function xntest(){ var d1=new date(); var str=""; for(var i=0;i<10000;i++){ str+="stext"; } var d2=new date(); document.write(" 字符串拼接方式耗时:"+(d2.gettime()- d1.gettime())+"毫秒:"); d1=new date(); var sb=new array();

数组方法解决JS字符串连接性能问题有争议_javascript技巧

1.传统上,字符串连接一直是js中性能最低的操作之一. var text="Hello"; text+=" World!"; 早期浏览器没有对这种运算进行优化. 由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果.频繁地在后台创建和销毁字符串导制性能异常低下. 2.发现这一点后,开发者们利用数组对象进行优化. var buffer=[],i=0; buffer[i++]="Hello";//通过相应索引值添加元素比push方法快 bu

JS 字符串连接[性能比较]_javascript技巧

一.ECMAScript的字符串是不可变的,即它们的值不能改变,因此当你写出下面的代码的时候发生了什么呢? Js代码 复制代码 代码如下: var str = "Hello "; str += "world"; 执行的步骤如下: 创建存储"Hello"的字符串 创建存储"world"的字符串 创建存储连接结果的字符串 把str的当前内容复制到结果中 把"world"复制到结果中 更新str,使它指向结果 每

JS编程建议——36:警惕字符串连接操作(1)

建议36:警惕字符串连接操作(1)字符串连接表现出惊人的"性能紧张".一个任务通过一个循环向字符串末尾不断地添加内容,以创建一个字符串.例如,创建一个HTML 表或一个XML 文档.此类处理在一些浏览器上表现得非常糟糕.当连接少量字符串时,这些问题都可以忽略,临时使用可选择最熟悉的操作.当合并字符串的长度和数量增加之后,有些函数开始显示出"威力".(1)+.+=+.+=运算符提供了连接字符串的最简单方法.除IE 7及其以前版本外,当前所有浏览器都对这种方法优化得很好

JS编程建议——36:警惕字符串连接操作(2)

建议36:警惕字符串连接操作(2)先将两个小字符串合并起来,然后将结果返回给大字符串.创建中间字符串s1 + s2与两次复制大字符串相比,对性能的"冲击"要轻得多.(2)编译期合并在赋值表达式中所有字符串连接都属于编译期常量,Firefox自动地在编译过程中合并它们.在以下这个方法中可看到这一过程: function foldingDemo() { var str = "compile" + "time" + "folding"

javascript字符串连接方法详解(性能测试)

js的字符串连接有两种:用"+"连接:用array的join连接.  代码如下 复制代码 var a1=10; var a2=20; a3 = a1 + a2 //数字加数字 alert(typeof(a3)) //number alert("a1+a2="+a3) //a1+a2= 30 alert(typeof("a1+a2="+a3)) //字符串"a1+a2"加数字a3;得到的是字符串,输出string alert(&

Javascript学习教程:字符串连接

文章简介:JS内置功能之一:字符串连接. JS内置功能之一:字符串连接: 如果将加号(+)运算符用于数字,表示两数相加: 但将它作用于字符串,则表示字符串相连,将第二个字符串连接在第一个之后. var a = "Hello,"; var b = "world"; var s = a + b; //生成字符串"Hello,world": alert(s)://显示出字符串 alert(s.length)://显示字符串的长度 字符串其他的调用方法:

js字符串转换成数字与数字转换成字符串的实现方法

 本篇文章主要是对js字符串转换成数字与数字转换成字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 js字符串转换成数字   将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数.     举例: parseInt('123') : 返回 123(int): parseInt('1234xxx') : 返回 1234(int):   如果解析不到数字,则将返回一个NaN的值,可以用isNa

js字符串函数

JS自带函数 字符串转换 字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: value.toString() var num= 19; // 19 var myStr = num.toString(); // "19" 2.String(value) var num= 19; // 19 var myStr = String(num); // "19" 3.隐式转换 var num= 19; // 19 var