JavaScript在执行大量的字符处理时会非常慢。参考网上的一些文章,写了个简单的StringBuffer类:
一、类图:
StringBuffer()
StringBuffer(string)
.append(string)
.toString(separator)
二、源码(只展示最主要的方法,其它可以自己添加,方法名可参照Java中的命名方法):
function StringBuffer(string) {
this._buffer = [];
this.append(string);
}
StringBuffer.prototype.append = function (string) {
if (string) {
//this._buffer.push(string);//用下面的兼容性好些,速度也快一点(IE6下测试的)
this._buffer[this._buffer.length] = string;
}
return this;
};
StringBuffer.prototype.toString = function (separator) {
return this._buffer.join(separator || "");
};
三、用法:
var sb = new StringBuffer("a");
sb.append("b").append("c").append("d"); //这个用法很象在java中的用法
for (var i = 0; i < 10000; i++){
sb.append(i);
}
document.write(sb.toString());
四、比较一下用普通方法生成的速度
var st, et;
st = new Date();
var sb = new StringBuffer("a");
sb.append("b").append("c").append("d");
for (var i = 0; i < 10000; i++){
sb.append(i);
}
document.write(sb.toString());
et = new Date();
document.write("<br />");
document.write("用StringBuffer类处理10000个字符相加消耗了" + (et - st) + "毫秒");
document.write("<br /><hr><br />");
st = new Date();
var s = ""
s += "a";
s += "b";
s += "c";
s += "d";
for (var i = 0; i < 10000; i++){
s += i;
}
document.write(s);
et = new Date();
document.write("<br />");
document.write("用普通方法处理10000个字符相加消耗了" + (et - st) + "毫秒");
点击下载 (请用浏览器右键/目录另存为,下载后将.jpg后缀名去掉)
为什么下载地址是个图片?
分享到:
相关推荐
Java 高级特性中,StringBuffer 类是一个非常重要的类,它和 String 类一样用来代表字符串,但是由于内部实现方式的不同,StringBuffer 在进行字符串处理时,不生成新的对象,在内存使用上要优于 String 类。...
StringBuffer类通过维护一个字符串数组来收集字符串片段,并最终使用数组的join方法来一次性将所有的字符串片段合并成一个完整的字符串。这样做的好处是,它避免了在每次拼接时都创建新的字符串和复制字符串内容,...
针对上述问题,一个常见的解决方案是使用StringBuffer类,这是一个在许多其他编程语言中已经成熟的解决方案。StringBuffer类专门用于在内存中动态地构建字符串,它内部通过维护一个字符数组来存储字符串片段,并提供...
Java中的`StringBuffer`类是一个非常重要的工具,特别是在处理字符串时需要频繁进行修改的情况。与`String`类不同,`StringBuffer`不会在每次修改时创建新的对象,从而减少了内存开销,提高了性能。在多线程环境中,...
Java的`StringBuffer`类提供了动态字符串构建的功能,尤其是在处理大量字符串连接时,相比直接使用加号(`+`)进行拼接,它的性能更优,因为每次用加号拼接字符串都会创建新的字符串对象。 JavaScript中的字符串是不...
总结来说,文章通过实现一个简单的StringBuffer类以及具体的使用示例,展示了在js中如何优化字符串操作以提高性能,特别是在需要重复构建和修改字符串的场景下。虽然js没有内置StringBuffer类,但通过简单的封装,...
显示情况时Javascript中并没有StringBuffer类,一种主流的Javascript StringBuffer类的实现是通过prototype构造一个StringBuffer类。 StringBuffer.js 代码如下: function StringBuffer(){ this.content = new Array...
为了解决这个问题,我们可以借鉴Java中的`StringBuffer`或`StringBuilder`类的概念,创建一个类似的JavaScript实现来优化大字符串的拼接。 首先,让我们深入理解为什么传统方法在处理大字符串时效率低下。在...
3、ajax功能,客户端与服务器端均由javascript编写,将客户端参数和函数名经XML编码后传至服务端,服务器执行后将结果传回客户端,从而实现了ajax。 4、常用组件,如Hashtable和StringBuffer,能够提高asp应用的性能...
在本篇文章中,我们主要学习如何使用JavaScript来制作一个将SQL语句转换为StringBuffer格式的在线小工具。StringBuffer是Java中一个可变的字符序列,它提供了一系列方法用于修改字符序列的内容,如append()、insert...
在Java中,StringBuffer是一个内置类,但在JavaScript中,由于语言特性,没有内置的StringBuffer类。不过,我们可以自定义一个类似于StringBuffer的功能。 以下是一个简单的JavaScript实现StringBuffer的实例: ``...
JSVM (JavaScript Virtual Machine的缩写),一个JavaScript基础框架,sourceforge开源项目,由万常华(wch3116)于2003年底发起, 采用的是 BSD License 授权协议。 JSVM并不是一个JavaScript Library,而是一个更...
为了解决这个问题,可以使用`StringBuffer`类,它使用数组`join`方法来实现高效字符串拼接。如代码所示,创建`StringBuffer`对象,通过`append`方法添加字符串,最后调用`toString`方法将数组中的所有字符串合并为一...