首页 程序笔记 C# 中string和StringBuilder性能差异

C# 中string和StringBuilder性能差异

在拼接一个字符串写入csv文件时候发现string + 的方式耗时巨大,在小量字符串拼接的时候看不出,当字符串拼接一多,性能差异巨大。

于是用它跟stringbuilder 进行一个比对:

Stopwatch sw = new Stopwatch();
sw.Start();
string content = "";
for(int i=0;i<40_000;i++)
{
	content+= "123456,-99.999\r\n";
  // 编译器优化后的代码为:content = content.Concat(string1,stirng2);
}
long content_time = sw.ElapsedMilliseconds;
sw.Stop();
(content_time*0.001).Dump("String 拼接耗时(s)");

StringBuilder sb = new StringBuilder();
Stopwatch sw2 = new Stopwatch();
sw2.Start();
for(int i=0;i<400_000;i++)
{
	sb.Append("123456,-99.999\r\n");
}
sw2.Stop();
(sw2.ElapsedMilliseconds*0.001).Dump("StringBuilder 拼接耗时(s)");

得出的结果是:

stringBuilder 拼接的字符串是40万个,string拼接的是4万个,耗时差异也是比较明显的。

stackflow 上的解析为:

简而言之就是string 是不可变(Immutable)的,拼接的时候就是创建一个新的字符串。

stringbuilder 是可变长度(Mutable)的,自然效率就高。

站心网

在拼接一个字符串写入csv文件时候发现string + 的方式耗时巨大,在小量字符串拼接的时候看不出,当字符串拼..

为您推荐

千万级的大表,如何做性能调优?

前言大表优化是一个老生常谈的话题,但随着业务规模的增长,总有人会“中招”。很多小伙伴的数据库在刚开始的时候表现良好,查询也很流畅,但一旦表中的数据量上了千万级,性能问题就开始浮现,查询慢、写入卡、分页..

Java中String类常见的方法

以下介绍字符串常见的几个方法。介绍String类在 Java 中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实..

GreenSock: 高性能的 HTML5 动画库

在现代网页开发中,动画已经成为提升用户体验的关键元素。无论是滚动效果、页面切换、按钮点击还是复杂的交互动画,良好的动画效果不仅能吸引用户,还能使界面更加生动、易用。GreenSock(GSAP,GreenSock Animation..

Elasticsearch性能优化干货

1、集群规划优化实践1.1 基于目标数据量规划集群在业务初期,经常被问到的问题,要几个节点的集群,内存、CPU要多大,要不要SSD?最主要的考虑点是:你的目标存储数据量是多大?可以针对目标数据量反推节点多少。1.2..

5个高性能 .NET Core 图片处理库推荐

在使用 .NET Core 开发中,图片处理是一个常见需求,如图像缩放、裁剪、格式转换和添加水印等。以下是一些推荐的 .NET Core 图片处理库,它们功能强大且支持多种图像处理功能:1. ImageSharp简介:ImageSharp 是一个..

如何优化ASP.NET Core应用的性能?

优化ASP.NET Core应用性能需要从代码、数据库、配置、服务器和部署等多个层面进行综合考虑。以下是一些优化ASP.NET Core应用性能的关键方法和技巧:1. 代码级优化使用异步编程:避免阻塞线程,通过async和await处理I..

SQLite性能支持多少数据量?

SQLite是一种轻量级的关系型数据库管理系统,广泛应用于移动应用、嵌入式系统和小型桌面应用程序中。由于其零配置、自给自足的特性,SQLite在很多场景下非常受欢迎。然而,对于许多开发者来说,一个常见的问题是:SQ..

Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库

Sylvan.Data.Excel是一个开源、免费、跨平台的.NET库,专注于读取和写入Excel数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。该库在.NET生态系统中是读取Excel数据文件的最快且内存分配最低的库..

SQL Server用UUID做主键性能问题和解决方案

在 SQL Server 中使用 UUID(全称:Universally Unique Identifier) 作为主键确实可能带来一些性能问题,特别是在大型数据库和高写入负载的场景下。以下是一些关键的性能挑战及其原因:1. 无序插入导致索引碎片化UU..

C#中的String和StringBuilder的区别

在 C# 中,String 和 StringBuilder 都是用于处理字符串的类,但它们在性能、可变性和使用场景上有显著区别。1. 可变性(Mutability)String:不可变。创建后,字符串的内容就不能更改。每次对 String 执行拼接、替..

c#实现与Java无差异的GZip压缩和GZip解压缩

c#实现与Java无差异的GZip压缩和GZip解压缩,其中有个坑就是GZip压缩的时候,只有在GZipStream在Dispose后调应对应MemoryStream.ToArray()所得到的结果才是正确的压缩数据。如果在zipStream.Write(bytes, 0, bytes.L..

.NET Core记录请求处理时间的中间件

以下是一个示例的 .NET Core 中间件,用于记录请求处理时间的情况:using Microsoft.AspNetCore.Http;using Microsoft.Extensions.Logging;using System;using System.Diagnostics;using System.Threading.Tasks;pub..

VS2022性能分析工具如何使用?

Visual Studio 2022提供了强大的性能分析工具,可以帮助开发人员识别和解决应用程序的性能问题。下面是使用VS2022性能分析工具的一般步骤:打开Visual Studio 2022,并打开要分析的项目。在菜单栏中选择"调试",然后..

.NET高性能大并发解决方案

.NET 提供了多种技术来提高应用程序的性能和并发能力。以下是一些常见的解决方案:使用任务并行库(TPL):TPL 提供了一种简单的方法来并行执行多个任务,从而提高性能。在 .NET Core 中,可以使用 Task 类来创建和..

c# 遍历list哪个方式性能最高

在 C# 中遍历 List 的性能可以通过以下几种方式进行比较:使用 for 循环:for (int i = 0; i < list.Count; i++){var item = list[i];// 进行操作}使用 foreach 循环:foreach (var item in list){// 进行操作}使用 ..

VS2017自带的性能分析工具使用方法

本文简单的介绍如何使用VS2017自带的性能分析工具。.NET性能分析工具,比较有名的是JetBrains.dotTrace,但是他只免费十天啊,其实VS就自带了性能分析工具,我们天天用VS写代码,有没有注意过它自带的性能分析功能呢..

.NET性能分析工具MiniProfiler使用示例

MiniProfiler是一个用于应用程序性能分析的轻量级工具,最初由Stack Exchange团队创建。Stack Exchange是知名的问答网站(如Stack Overflow)的背后团队,他们开发了许多开源工具和库来支持他们的产品和开发流程。Mi..

.NET网站性能优化方案

.NET 网站的性能优化是一个综合性的过程,涉及多个方面,包括前端和后端优化、服务器配置、代码优化等。下面是一些.NET网站性能优化的方案:1. 前端优化:减少 HTTP 请求:合并、压缩和缓存静态资源(CSS、JavaScrip..

.NET byte和string互相转换

在.NET中,可以使用Encoding类来进行字节(byte)和字符串(string)之间的相互转换。这主要依赖于所选择的编码方式。以下是一些示例:将字符串转换为字节数组使用指定的编码方式将字符串转换为字节数组:string myS..

.NET架构师技术要求:掌握.NET平台和架构设计能力

作为一个.NET架构师,你需要具备以下技术要求:精通.NET平台:作为.NET架构师,你应该对.NET平台和相关技术栈有深入的理解,包括.NET Framework和.NET Core。你应该熟悉.NET编程语言,如C#,以及相关的.NET开发工具..

发表回复

返回顶部