C# 利用StringBuilder提升字符串拼接性能的小例子

用Stopwatch分段监控了一下,发现耗时最多的函数是SaveToExcel

此函数中遍列所有数据行,通过Replace替换标签生成Excel行,然后将行数据累加赋值到一个字符串

复制代码 代码如下:

string excelString = "";
foreach(var item in list){
        excelString += string.Format("<row>....{0}</row>",list.Title);
}

看到这。。立马想起无数先烈们的警告、字符串拼接的内存操作原理等等。于是大手一挥,代码全删,改为如下形式

复制代码 代码如下:

string excelString = new StringBuilder();
foreach(var item in list){
      excelString.AppendFormat("<row>......{0}</row>",list.Title);
}

再次测试,效率立马提升了几十倍。之前8000行需要30s,现在只需要2s

时间: 2024-10-28 18:08:49

C# 利用StringBuilder提升字符串拼接性能的小例子的相关文章

使用C++的StringBuilder提升4350%的性能

介绍 经常出现客户端打电话抱怨说:你们的程序慢如蜗牛.你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务. 但是这些可能的疑点都很正常,一点问题都没有. 你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中. 你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作. 这个优化只做对了一半. 你先测试大字符串写文件的速度,发现快如闪电.然后你再测试所有字符串拼接的速

JavaScript 字符串拼接性能分析小记

JavaScript 中,我们经常会因为各种各样的原因去拼接字符串,可能是为了Html的呈现,可能是为了属性的设置,也可能仅仅是为了输出调试日志. 每次拼接字符串的时候,我们很自然地去考虑它的性能,是不是str=str+a是不是和str+=a性能一样,使用数组Join是不是会更快一些,哪一种才是最好的实现. 的确,我们有诸多方式去拼接字符串,下面本文将会将主流字符串拼接方逐一进行性能评测. 公平起见,我们的测试都是跑在各浏览器的最后一个正式发布版本上,即IE9 ,Chrome19,FF13 及O

Java字符串之性能优化

转自:http://it.deepinmind.com/categories.html 基础类型转化成String 在程序中你可能时常会需要将别的类型转化成String,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值转化成String(不然的话像System.out.println(1+'a')会输出98,而不是"1a").当然了,有一组String.valueOf方法可以完成这个(或者是基础类型对应的包装类的方法

javascript中字符串拼接详解_javascript技巧

最近在研究<javascript高级程序设计>中,有一段关于字符串特点的描述,原文大概如下:ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,他们的值就不能改变.要改变某个变量的保存的的字符串,首先要销毁原来的字符串,然后再用另外一个包含新值的字符串填充该变量,例如: 复制代码 代码如下: var lang = "Java"; lang = lang + "Script";  实现这个操作的过程如下:首先创建一个能容纳10个字符的新字符

数据-MSSQL如果做字符串拼接的子查询

问题描述 MSSQL如果做字符串拼接的子查询 例子 表 A 列 ID0000 VALUE0 1 AAAAAA 2 BBBBBB 3 CCCCCC 表 B 列 ID0000 SQL000 7 SELECT VALUE0 FROM A WHERE ID0000='1' 8 SELECT VALUE0 FROM A WHERE ID0000='2' 9 SELECT VALUE0 FROM A WHERE ID0000='3' 想要的效果 用 SELECT 查询表 B的时候 得到 列 ID0000 S

从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接

长久以来,我们被教导字符串的连接最好用StringBuffer.StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence.StringBuffer.StringBuilder.String,他们之间到底有什么联系呢? 1.从类的定义看CharSequence.StringBuffer.StringBuilder.String的关系 下面先贴上这四者的定义(来自JDK1.6) CharSequence是一个定义字符串操作的接口,Strin

Java的字符串拼接与性能

问题描述 [导读]在JAVA中拼接两个字符串的最简便的方式就是使用操作符"+"了.假如你用"+"来连接固定长度的字符串,能够性能上会稍受影响,但是假如你是在循环中来"+"多个串的话,性能将指数倍的下降. 在JAVA中拼接两个字符串的最简便的方式就是使用操作符"+"了.假如你用"+"来连接固定长度的字符串,能够性能上会稍受影响,但是假如你是在循环中来"+"多个串的话,性能将指数倍的下降.假

利用交换机提升无盘网络性能

一个稳定快点的网络环境对于网吧来说是很关键的,网络现在流行的有千M网络和百M网络,万M的也有,无盘网吧网络要达到更大M的网络环境.交换机在网吧网络环境中扮演很重要的角色,如何利用交换机提升无盘网吧网络性能呢? 要提高网络传送速度我们只能用好点交换机网线网卡或做汇聚等来解决. 必须具备网吧里的所有交换机为纯千M,所有机器网卡为千M网卡,达到这样条件后网络中机器与任意机器之间的速度自然就是1000M了,千M交换机是指所有端口都是千M口,而老点的交换机象有26口的那种. 一般是24口百M,2个主干千M

Java字符串拼接效率分析及最佳实践

本文来源于问题 Java字符串连接最佳实践? java连接字符串有多种方式,比如+操作符,StringBuilder.append方法,这些方法各有什么优劣(可以适当说明各种方式的实现细节)? 按照高效的原则,那么java中字符串连接的最佳实践是什么? 有关字符串处理,都有哪些其他的最佳实践? 废话不多说,直接开始, 环境如下: JDK版本: 1.8.0_65 CPU: i7 4790 内存: 16G 直接使用+拼接 看下面的代码: @Test      public void test() {