ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较

 更新时间:2007年08月18日 22:49:55   作者:  
直观认识:正面交锋 
性能测试1:StringBuilder 
第 1 轮测试:用时 312.5 毫秒 
第 2 轮测试:用时 421.875 毫秒 
第 3 轮测试:用时 453.125 毫秒 
第 4 轮测试:用时 421.875 毫秒 
第 5 轮测试:用时 453.125 毫秒 
性能测试2:StringWriter 
第 1 轮测试:用时 406.25 毫秒 
第 2 轮测试:用时 453.125 毫秒 
第 3 轮测试:用时 421.875 毫秒 
第 4 轮测试:用时 437.5 毫秒 
第 5 轮测试:用时 437.5 毫秒 
性能测试3:String(1/100 数据量) 
第 1 轮测试:用时 12406.25 毫秒 

您注意到了吗? 
       String 连接方式在只有 1/100 数据的测试下,使用时间30倍于 StringBuilder。因此,基于性能的考量,我们绝不推荐这种方式。而 StringBuilder 较之 StringWriter 略胜一筹,具体的原因将在下文中分析。当然,测试存在误差,但足以说明事实。 

StringWriter 与 StringBuilder:谁是强者 
        StringWriter 位于 System.IO 命名空间内,继承于 TextWriter。在 .Net Reflector 的反编译结果中显示,它的内部事实上是采用 StringBuilder 进行连接。无怪乎 StringWriter 会略逊一筹,它原来仅仅是 StringBuilder 的一个适配(可以称之为 Adapter 模式)。为什么 StringBuilder 拥有如此的效率? 

您注意到了吗? 
在许多地方,需要 StringWriter 而不是 StringBuilder,例如 XmlTextWriter。 

StringBuilder:原因何在 
       关于 System.Text.StringBuilder 的研究,网上已有不少,其主要原理便是预先以非托管方式分配内存,保证文本的修改与扩张,不重新创建一个 String 对象。而 String 对象的创建,便是性能瓶颈所在。它的连接效率远超过 String,不过在少量的文本连接时,显然 String 编程时更方便些。 

相关文章

  • asp.net core利用AccessControlHelper实现控制访问权限

    asp.net core利用AccessControlHelper实现控制访问权限

    这篇文章主要给大家介绍了关于asp.net core利用AccessControlHelper实现控制访问权限的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用asp.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • ASP.NET购物车实现过程详解

    ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • JSON在ASP.NET中使用方法

    JSON在ASP.NET中使用方法

    本篇将简单的介绍一个在.NET中实现JSON的API,然后使用该API做个C/S ASP.NET的小练习,需要的朋友可以参考下
    2015-10-10
  • Asp.Net Core2.1前后使用HttpClient的两种方式

    Asp.Net Core2.1前后使用HttpClient的两种方式

    这篇文章主要给大家介绍了关于Asp.Net Core2.1前后HttpClient的使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • ASP.NET入门之HTML服务器控件概述

    ASP.NET入门之HTML服务器控件概述

    这篇文章主要介绍了ASP.NET入门之HTML服务器控件,对于初学者来说很有借鉴学习价值,需要的朋友可以参考下
    2014-07-07
  • .NET Core2.1如何获取自定义配置文件信息详解

    .NET Core2.1如何获取自定义配置文件信息详解

    这篇文章主要给大家介绍了关于.NET Core2.1如何获取自定义配置文件信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • asp.net 动态表单之数据分页

    asp.net 动态表单之数据分页

    我们很常会在项目中提到一个动态表单的概念,比如学校里面学生的考试成绩,当学生登录系统的时候,他当然是希望看到他自己所有科目的成绩;又或者是班主任,他需要看到本班同学所有科目的成绩;这些时候我们一般都会在页面中呈现如下的效果。
    2010-03-03
  • ASP.NET Core 中的模型绑定操作详解

    ASP.NET Core 中的模型绑定操作详解

    在本篇文章里小编给大家整理的是关于ASP.NET Core 中的模型绑定操作的相关知识点,有需要的朋友们可以学习下。
    2019-08-08
  • asp.net+js实现的ajax sugguest搜索提示效果

    asp.net+js实现的ajax sugguest搜索提示效果

    阿会楠根据网上一份原作者不详的代码进行了修改,以适合自己的项目并增加了多个功能。此次放出的代码为基本实现代码,也是最接近原来的代码,略去其他功能。版权归原作者所有。
    2009-04-04
  • .NET 与树莓派WS28XX 灯带的颜色渐变动画效果的实现

    .NET 与树莓派WS28XX 灯带的颜色渐变动画效果的实现

    所谓颜色渐变动画,首先,你要确定两种颜色——起始色和最终色,比如从绿色变成红色,绿色是起始,红色是终点。这篇文章主要介绍了.NET 与树莓派WS28XX 灯带的颜色渐变动画,需要的朋友可以参考下
    2021-12-12

最新评论