且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

一个很有意思的发现(JavaScript字符串连接的效率)

更新时间:2022-01-06 15:59:44

   

一个很有意思的发现(JavaScript字符串连接的效率)

一个很有意思的发现(JavaScript字符串连接的效率)一个很有意思的发现(JavaScript字符串连接的效率)Code
/**
 * @author wenjl
 * @desc  string连接类
 * @createTime 2009-03-29
 
*/
function StringBuilder(){
    
this.__string__ = new Array();
}
StringBuilder.prototype.append 
= function(str){
    
this.__string__.push(str);
}
StringBuilder.prototype.toString 
= function(){
    
return this.__string__.join("");
}

上面是类似C#StringBuilder类.

 下面是我的测试代码

 

一个很有意思的发现(JavaScript字符串连接的效率)一个很有意思的发现(JavaScript字符串连接的效率)Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        
<title>Untitled Document</title>
        
<script type="text/javascript" src="StringBuilder.js">
        
</script>
        
<script type="text/javascript">
            var d1 
= new Date();
            var buffer 
= new StringBuilder();
            
for (var i = 1; i < 10000; i++) {
                buffer.append(
"E3Card");
            }
            
            var strResult 
= buffer.toString();
            var d2 
= new Date();
            document.write(
"StringBuilder用时:" + (d2.getTime() - d1.getTime()) + "<br/>");
            
            
//---+-----
            var d3 = new Date();
            var str 
= "";
            
for (var i = 1; i < 10000; i++) {
                str 
+= "E3Card";
            }
            var d4 
= new Date();
            document.write(
"+链接用时:" + (d4.getTime() - d3.getTime()) + "<br/>");
        
</script>
    
</head>
    
<body>
    
</body>
</html>

 

测试结果:

火狐:

StringBuilder用时:63
+链接用时:31

IE 7:

StringBuilder用时:78
+链接用时:1532

IE 8:

StringBuilder用时:16
+链接用时:31

上面的结果大家可以看出来在IE和火狐下两个方法的巨大差异,奇怪的是在火狐里+号的速度竟然比StringBuilder快.

版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-03-30 16:56 温景良(Jason) Views(587) Comments(1) Edit 收藏

  
#1楼14913262009/3/30 17:08:11 2009-03-30 17:08 | ccutes
我觉得应该是+比sb快的,因为在你自己定义的sb里你用数组了,不管是append还是tostring,都费效率吧?

公告

 
本文转自我的程序人生博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/03/30/1425315.html,如需转载请自行联系原作者