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
相关推荐
-
浅析C#中StringBuilder类的高效及与String的对比
在C#中,在处理字符串拼接的时候,使用StringBuilder的效率会比硬拼接字符串高很多.到底有多高,如下: static void Main( string[] args ) { string str1 = string.Empty; Stopwatch sw1 = new Stopwatch(); sw1.Start(); for ( int i = 0; i < 10000; i++ ) { str1 = str1 + i.ToString(); } sw1.Stop(); Conso
-
ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较
直观认识:正面交锋 性能测试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
-
js实现C#的StringBuilder效果完整实例
本文实例讲述了js实现C#的StringBuilder效果.分享给大家供大家参考,具体如下: /* ##################### DO NOT MODIFY THIS HEADER ##################### # Title: StringBuilder Class # # Description: Simulates the C# StringBuilder Class in Javascript. # # Author: Adam Smith # # Email
-
在C#及.NET框架中使用StringBuilder类操作字符串的技巧
但如果性能的优劣很重要,则应该总是使用 StringBuilder 类来串联字符串.下面的代码使用 StringBuilder 类的 Append 方法来串联字符串,因此不会有 + 运算符的链接作用产生. class StringBuilderTest { static void Main() { string text = null; // Use StringBuilder for concatenation in tight loops. System.Text.StringBuilder
-
c# StringBuilder.Replace 方法 (Char, Char, Int32, Int32)
将此实例的子字符串中所有指定字符的匹配项替换为其他指定字符. 命名空间:System.Text 程序集:mscorlib(在 mscorlib.dll 中) 语法 C# public StringBuilder Replace ( char oldChar, char newChar, int startIndex, int count ) 参数 oldChar 要替换的字符. newChar 替换 oldChar 的字符. startIndex 此实例中子字符串开始的
-
C#中StringBuilder类的使用总结
String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建
-
C#中StringBuilder用法以及和String的区别分析
String类有不可改变性.每次执行字符操作时,都会创建一个新的String对象. StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题.初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置StringBuilder 的长度. 举例: 用String类这么写 复制代码 代码如下:
-
C# 利用StringBuilder提升字符串拼接性能的小例子
用Stopwatch分段监控了一下,发现耗时最多的函数是SaveToExcel 此函数中遍列所有数据行,通过Replace替换标签生成Excel行,然后将行数据累加赋值到一个字符串 复制代码 代码如下: string excelString = ""; foreach(var item in list){ excelString += string.Format("<row>....{0}</row>",list.Title)
-
golang 字符串拼接性能的对比分析
背景 最近在做一个服务发现/注册的agent, 各个服务需要通过这个agent来注册自己的服务,在完成 开发后,测试性能时发现性能达不到要求,通过pprof 来确认cpu主要耗费在gc上,分析结果主要是由于字符串拼接导致,故需要测试一下字符串拼接的几种方法的性能: 字符串拼接的几种方法 1.直接使用加号进行拼接 2.strings.Join() 3.fmt.Sprintf() 4.bytes.Buffer 大量字符串拼接性能测试 我们使用的场景主要是大量字符串拼接,所以需要的场景是不断在字符串上
-
详解.NET中string与StringBuilder在字符串拼接功能上的比较
string与StringBuilder的在字符串拼接时执行效率上有差异,因为StringBuilder类中用了一个技巧:它申请了两倍的内存空间存放字符串,在调用Append方法拼接字符串时,会先检查剩余的空间是否能放下要拼接的字符串,若能放下,则将要拼接的字符串Copy到剩余的空间中,若不能放下,则再申请拼接后的字符串两倍的长度空间,将当前字符串Copy到新的空间中(除了两倍的空间外,这点跟string的拼接没有太多的差异).因此StringBuilder能提高字符串拼接的效率在于它减少了申请
-
Golong字符串拼接性能优化及原理介绍
目录 1.字符串高效拼接 1.1 常见的字符串拼接 1.2 字符串拼接测试 1.3 推荐 2.相关原理 2.1 + 号 2.2 strings.Builder 与 bytes.Buffer 2.2.1 内部[]byte 增长方式: 2.2.2 性能比较 1.字符串高效拼接 go 字符串是不可修改的,所谓字符串拼接就是创建新的字符串对象.如果代码中存在大量的字符串拼接,那么性能将会存在影响. 1.1 常见的字符串拼接 +号 func plusConcat(n int, s string) stri
-
javascript中字符串拼接详解
最近在研究<javascript高级程序设计>中,有一段关于字符串特点的描述,原文大概如下:ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,他们的值就不能改变.要改变某个变量的保存的的字符串,首先要销毁原来的字符串,然后再用另外一个包含新值的字符串填充该变量,例如: 复制代码 代码如下: var lang = "Java"; lang = lang + "Script"; 实现这个操作的过程如下:首先创建一个能容纳10个字符的新字符串
-
java字符串拼接与性能分析详解
假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用"+"的话将得到最低的性能.但是究竟这个性能有多差?如果我们同时也把StringBuffer,StringBuilder或String.concat()放入性能测试中,结果又会如何呢?本文将会就这些问题给出一个答案! 我们将使用Per4j来计算性能,因为这个工具可以给我们一个完整的性能指标集合,比如最小,最大耗时,统计时间段的标准偏差等.在测试代码中,为了得到一个准确的标准偏差值,我们将执行20个拼接"*"
-
Java字符串拼接的五种方法及性能比较分析(从执行100次到90万次)
目录 > 源代码,供参考 > 测试结果: > 查看源代码,以及简单分析 > 字符串拼接一般使用"+",但是"+"不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现. 1. 加号 "+" 2. String contact() 方法 3. StringUtils.join() 方法 4. StringBuffer append() 方法 5. StringBuilder
-
Angular利用trackBy提升性能的方法
在Angular的模板中遍历一个集合(collection)的时候你会这样写: <ul> <li *ngFor="let item of collection">{{item.id}}</li> </ul> 有时你会需要改变这个集合,比如从后端接口返回了新的数据.那么问题来了,Angular不知道怎么跟踪这个集合里面的项,不知道哪些该添加哪些该修改哪些该删除.结果就是,Angular会把该集合里的项全部移除然后重新添加.就像这样: 这样做
-
python字符串拼接的7种方法及性能比较详解
python3.x拼接字符串一般有以下几种方法: 1. 直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!' print(s) 输出结果: Hello World! 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率. 2. 通过str.join()方法拼接 strlist=['Hello',' ','World','!'] print(''.j
-
JavaScript 学习笔记二 字符串拼接
var str="hello"; str+="world"; 实际上,这段代码在幕后执行的步骤如下: (1) 创建存储"hello"的字符串. (2) 创建存储"world"的字符串. (3) 创建存储连接结果的字符串. (4) 把str的当前内容复制到结果中. (5) 把"world"复制到结果中. (6) 更新str,使它指向结果. 每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源.如果重
随机推荐
- perl的格式化输出及chomp的重要性分析
- 详解 MapperScannerConfigurer之sqlSessionFactory注入方式
- jQuery简单实现禁用右键菜单
- innerHTML中标签可以换行的方法汇总
- Oracle ASM数据库故障数据恢复解决方案
- JavaScript动态改变表格单元格内容的方法
- IP138 IP地址查询小偷实现代码
- Python 异常处理实例详解
- python连接mongodb操作数据示例(mongodb数据库配置类)
- Bootstrap精简教程中秋大放送
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程
- C++虚函数表实例分析
- Windows系统下Oracle数据库每天自动备份
- JavaScript递归算法生成树形菜单
- Android 跨进程模拟按键(KeyEvent )实例详解
- 使用Spring AOP实现MySQL数据库读写分离案例分析(附demo)
- 一些.NET对多线程异常处理技巧分享
- C#实现的简单验证码识别实例
- 快速入门介绍Java中强大的String.format()
- Python实现的读写json文件功能示例