`
amoszhou
  • 浏览: 3384 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

String的连接操作之自定义工具类及与+,cancat性能比较

阅读更多
用Javascript面向对象方式,自己编写一个Javascript函数,来进行字符串连接操作.
函数代码如下:
function StringBuffer(){
								this._strings = new Array();
							}
							StringBuffer.prototype.append = function(str){
									this._strings.push(str);
								};
							StringBuffer.prototype.toString = function(){
									return this._strings.join("");
							
   };


为了检测一下性能,便与String自带的连接操作(+ 和 concat) 进行了一个性能比较,
比较代码如下:
function StringBuffer(){
								this._strings = new Array();
							}
							StringBuffer.prototype.append = function(str){
									this._strings.push(str);
								};
							StringBuffer.prototype.toString = function(){
									return this._strings.join("");
								};
						function test(){
								var d1 = new Date();
								var str = "";
								for(var i=0;i<10000;i++){
										str+="str";
									}
								var d2 = new Date();
								document.write("use +  cost time ==" + (d2.getTime() - d1.getTime()) + "<br/>");
								
								var d3 = new Date();
								var str2 ="";
									for(var i=0;i<10000;i++){
										str2=str2.concat("str");
									}
								var d4 = new Date();
								document.write("use concat  cost time ==" + (d4.getTime() - d3.getTime()) + "<br/>");
								
								var oBuffer = new StringBuffer();
								d5 = new Date();
								for(var i = 0 ; i<10000;i++){
										oBuffer.append("test");
									}
								var sResult = oBuffer.toString();
								var d6 = new Date();
								document.write("use stringBuffer cost time ==" + (d6.getTime()-d5.getTime()) + "<br/>");
					}
	window.onload=test();


运行,且看结果:
运行结果
次数用+ 用concat 用自定义方法
1 use + cost time ==109 use concat cost time ==141use stringBuffer cost time ==62
2 use + cost time ==250 use concat cost time ==328use stringBuffer cost time ==78
3 use + cost time ==250 use concat cost time ==266use stringBuffer cost time ==62

总结:
用自定义的方法,平均耗时是用+的33%,是用concat的27%,所以三种方法中最耗时的是concat,其次是+.效率最高的应该是自定义的方法

1
3
分享到:
评论

相关推荐

    c++自定义string类

    在C++编程中,自定义`string`类是一项常见的练习,它可以帮助我们深入理解对象、内存管理和操作符重载等核心概念。以下是对这个主题的详细讲解: 首先,`string`类是C++标准库中的一个关键部分,用于处理字符串。...

    自定义String类

    在C++编程中,`String`类是一种常用的用于表示和操作字符串的数据结构。虽然C++标准库中已经提供了`std::string`类,但为了学习和理解对象导向编程(OOP)以及C++的特性,有时我们会选择自定义一个`String`类。在这...

    超实用的android自定义log日志输出工具类

    android自定义log日志输出工具,该工具类具有以下优点: 1 在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名。 如 : LogUtils.i(this,”这是一个实用的日志...

    自定义string类

    标准库中的`std::string`类为开发者提供了高效且易用的字符串操作功能,但在某些特定场景下,可能需要实现一个自定义的字符串类来满足特殊需求或者深入理解字符串类内部的工作原理。本文将详细介绍一个简单的自定义`...

    数据库连接、操作工具类

    在IT行业中,数据库是存储和管理数据的核心组件,而有效地连接和操作数据库是开发者必备的技能之一。本资源提供了一套实用的工具类,用于简化Java应用程序中的数据库交互。下面将详细阐述这两个类——DBUtil和...

    jdbc连接mysql工具类

    接下来,创建一个名为`JdbcUtil`的工具类,这个类将封装数据库的连接、操作以及关闭等逻辑。基本的类结构可能如下: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql....

    qt 自定义String 类

    本文将深入探讨如何在Qt中自定义一个`String`类,即`MyString`,以及它与标准C++中的`std::string`的区别和联系。 首先,`MyString`类的设计可能是为了提供一种更符合Qt编程风格的方式来处理字符串。在C++标准库中...

    28个java常用的工具类

    1. **String类**:Java内置的String类提供了大量操作字符串的方法,如concat、substring、indexOf、replace、trim等,帮助开发者高效地处理文本。 2. **Arrays类**:这个工具类提供了排序、比较、复制和填充数组的...

    java自定义服务器检验工具类

    在Java编程领域,自定义服务器检验工具类是开发者为了实现特定的服务器验证功能而创建的类。这样的工具类通常包含了各种方法,用于检查输入数据的有效性、处理服务器端的业务逻辑以及确保系统的安全性。以下是对这个...

    30个java工具类

    [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] ...

    C++随手代码收藏 自定义实现 String 类.docx

    在C++编程语言中,自定义实现`String`类是一个常见的练习,旨在理解对象导向编程的基本概念,如构造函数、赋值运算符重载、比较运算符重载以及字符串操作。以下是对给定代码片段的详细解释: 1. **类定义**: `...

    String和Date工具类

    因此,我们经常需要借助工具类来处理`String`对象的各种操作。 1. **校验是否包含表情**:在社交应用或者聊天系统中,需要检测用户输入是否含有非法的表情字符。这通常通过正则表达式实现,检查字符串中是否存在...

    第12章04自定义字符串类_String.zip_综合类 自定义string

    在本案例中,我们聚焦于如何构建一个综合性的自定义字符串类,以实现与C++标准库中的`std::string`类似的但可能更符合特定项目需求的特性。以下是一些关键知识点: 1. **基础结构**:自定义的`_String`类通常会包含...

    Java自定义日志工具类

    Java自定义日志工具类是Java开发中一个重要的实践,它可以帮助开发者记录应用程序运行过程中的信息,便于调试、排查问题和后期分析。日志工具类通常包含多种级别(如DEBUG, INFO, WARN, ERROR, FATAL)以适应不同...

    Rabbitmq工具类,java工具类RabbitmqUtil

    `RabbitmqUtil` 是一个专门为Java开发者设计的工具类,简化了与RabbitMQ交互的复杂过程,使得开发者能够更快速、更方便地发送和接收消息。 首先,我们来详细了解一下`RabbitmqUtil`工具类的主要功能: 1. **连接...

    jedis操作redis工具类,使用该工具类无需配置spring

    这个工具类封装了与Redis服务器通信的所有逻辑,开发者只需调用相应的方法即可完成数据的读写操作,无需关心连接管理、命令构建等底层细节。这样的设计遵循了单一职责原则,有助于代码的维护和扩展。 例如,我们...

    安卓开发框架工具类相关-androiddb工具类.zip

    因此,许多开发者会创建自定义的工具类,如`DBHelper`或`DatabaseUtils`,来封装这些底层操作,提高代码的可读性和可维护性。 在`useDB`这个文件夹中,可能包含了一系列用于操作数据库的工具类,例如`DBManager`...

    JAVA操作mysql工具类

    这篇博客的作者提供了一个自封装的JAVA操作MySQL数据库的工具类,这有助于简化数据库的交互过程,提高代码的可读性和可维护性。这里我们将深入探讨这个工具类可能涉及的关键知识点。 1. **JDBC(Java Database ...

    C++自定义string字符串类

    这个自定义的字符串类,如文件名所示的`MyString`,通常会包含一系列与字符串处理相关的操作,如构造、赋值、比较、插入、删除、查找等。接下来,我们将详细探讨如何实现这样的自定义字符串类,并结合IO流操作进行...

    自定义string类.cpp

    自定义string类.cpp

Global site tag (gtag.js) - Google Analytics