在读JavaScript高级程序设计这本书,试验了一个StringBuffer的效率问题,书中提到StringBuffer的效率要比str+的方式节省50~66%的时间,但是实际的测试结果却不是,代码如下:
<script type="text/javascript">
$(document).ready(function ()
{
var d1 = new Date();
var str = "";
for (var i = 0; i < 50000; i++)
{
str += "text";
}
var d2 = new Date();
document.write("Concatenation with plus:" + (d2.getTime() - d1.getTime()) + "milliseconds");
var buffer = new StringBuffer();
d1 = new Date();
for (var j = 0; j < 50000; j++)
{
buffer.append("text");
}
var result = buffer.toString();
d2 = new Date();
document.write("<br />Concatenation with StringBuffer:" + (d2.getTime() - d1.getTime()) + "milliseconds");
})
function StringBuffer()
{
this._strings = new Array;
}
StringBuffer.prototype.append = function (str)
{
this._strings.push(str);
}
StringBuffer.prototype.toString = function ()
{
return this._strings.join("");
}
</script>
测试结果:
Concatenation with plus:31milliseconds
Concatenation with StringBuffer:78milliseconds