time 
设为首页】【收藏本站
当前位置: 主页 > JavaScript > JS教程 > Javascript String 方法效率大比拼

Javascript String 方法效率大比拼

时间:2009-06-05 11:16 点击:702次 字体:[ ]




  最初是通过梅子(梅花雪)关于大型字符串拼接效率(1,2)的研究得到启发,最近又看到never-online的从trim原型函数看js正则表达式的性能 ,里面有介绍正则表达式效率陷阱等问题,并提出解决方法。我向来对这些鸡毛蒜皮感兴趣,也开始对大型字符串各种方法实现的效率进行比较,并尝试提高这些方法的效率。

  1. 大型字符串拼接

  如梅子所言,使用数组的join方法确实是最好的实现,可以根据这个思路设计StringBuilder, StringBuffer类。

  2. 大型字符串trim

  其实never-online在他的文章里有一些说的不准确的地方,代码也不算很精炼。既然这是鸡毛蒜皮的小事,这些零碎东西当然要斤斤计较了。

  我很久以前有收集到这样一些实现,I:

String.prototype.trim = function(){
return this.replace(/(^s+)(s+$)/g, '');
};

  为了避免正则表达式使用括号带来的消耗,可以写成这样,II:

String.prototype.trim = function(){
return this.replace(/(?:^s+)(?:s+$)/g, '');
};

  另外有一套实现是这样的,III:

String.prototype.lTrim = function(){
return this.replace(/^s+/, '');
};
String.prototype.rTrim = function(){
return this.replace(/s+$/, '');
};
String.prototype.trim = function(){
return this.lTrim().rTrim();
};
其实调用函数也会多少有一点消耗,写成这样或许会快一点点(开个玩笑,这样写会带来一些冗余代码,这时候就需要基于效率(时间)、代码量(空间)和可维护性方面的考量了),IV:

String.prototype.trim = function(){
return this.replace(/^s+/, '').replace(/s+$/, '');
};



本文地址 : http://www.fengfly.com/plus/view-50715-1.html
标签: 字符串 方法 效率 return Function 比拼
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: