当前位置: 首页 > wzjs >正文

免费网站建设公司联系方式怎么样学做网站

免费网站建设公司联系方式,怎么样学做网站,找工作网站,网站建设总结材料C#字符串拼接的6种方式及其性能分析对比 前言BenchmarkDotNet拼接基础数据操作符$内插字符串String.FormatString.ConcatString.JoinStringBuilder性能基准对比测试完整代码少量字符串拼接大量字符串拼接 前言 在C#编程中字符串拼接是一种常见且基础的操作,广泛应用…

C#字符串拼接的6种方式及其性能分析对比

  • 前言
  • BenchmarkDotNet
    • 拼接基础数据
    • +操作符
    • $内插字符串
    • String.Format
    • String.Concat
    • String.Join
    • StringBuilder
    • 性能基准对比测试完整代码
    • 少量字符串拼接
    • 大量字符串拼接

前言

在C#编程中字符串拼接是一种常见且基础的操作,广泛应用于各种场景,如动态生成SQL查询、构建日志信息、格式化用户显示内容等。然而,不同的字符串拼接方式在性能和内存使用上可能存在显著差异。今天咱们一起来看看在C#中字符串拼接的常见6种方式及其使用BenchmarkDotNet进行性能分析对比。

BenchmarkDotNet

BenchmarkDotNet是一个基于.NET开源、功能全面、易于使用的性能基准测试框架,它为.NET开发者提供了强大的性能评估和优化能力。通过自动化测试、多平台支持、高级统计分析和自定义配置等特性,BenchmarkDotNet帮助开发者更好地理解和优化软件系统的性能表现。

拼接基础数据

        private const int IterationCount = 1000;private const string StringPart1 = "追逐时光者";private const string StringPart2 = "DotNetGuide";private const string StringPart3 = "DotNetGuide技术社区";private readonly string[] _stringPartsArray = { "追逐时光者", "DotNetGuide", "DotNetGuide技术社区" };

+操作符

         /// <summary>/// 使用 + 操作符拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string PlusOperator(){string result = StringPart1 + " " + StringPart2 + " " + StringPart3;return result;}

$内插字符串

        /// <summary>/// 使用 $ 内插字符串拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string InterpolatedString(){string result = $"{StringPart1} {StringPart2} {StringPart3}";return result;}

String.Format

        /// <summary>/// 使用string.Format()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringFormat(){string result = string.Format("{0} {1} {2}", StringPart1, StringPart2, StringPart3);return result;}

String.Concat

        /// <summary>/// 使用string.Concat()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringConcat(){string result = string.Concat(StringPart1, " ", StringPart2, " ", StringPart3);return result;}

String.Join

        /// <summary>/// 使用string.Join()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringJoin(){string result = string.Join(" ", _stringPartsArray);return result;}

StringBuilder

  • Append拼接字符串
        /// <summary>/// 使用StringBuilder.Append拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringBuilderAppend(){StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append(StringPart1);stringBuilder.Append(" ");stringBuilder.Append(StringPart2);stringBuilder.Append(" ");stringBuilder.Append(StringPart3);return stringBuilder.ToString();}
  • AppendFormat拼接字符串
        /// <summary>/// 使用StringBuilder.AppendFormat拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringBuilderAppendFormat(){StringBuilder stringBuilder = new StringBuilder();stringBuilder.AppendFormat("{0} {1} {2}", StringPart1, StringPart2, StringPart3);return stringBuilder.ToString();}

性能基准对比测试完整代码

咱们分别以少量字符串拼接和大量字符串拼接为例,进行性能基准对比测试:
说明:

  • Mean: 所有测量值的算术平均值。
  • Error: 99.9% 置信区间的一半。
  • StdDev: 所有测量值的标准差。
  • Gen0: 第 0 代 GC 每 1000 次操作收集一次。
  • Gen1: 第 1 代 GC 每 1000 次操作收集一次。
  • Gen2: 第 2 代 GC 每 1000 次操作收集一次。
  • Allocated: 每次操作分配的内存(仅托管内存,包含所有内容,1KB = 1024B)。
  • 1 ms: 1 毫秒(0.001 秒)。

少量字符串拼接

   using BenchmarkDotNet.Attributes;
using System.Text;namespace BenchmarkDotNetExercise
{[MemoryDiagnoser]//记录内存分配情况public class StringConcatenationBenchmark{private const int IterationCount = 1000;private const string StringPart1 = "追逐时光者";private const string StringPart2 = "DotNetGuide";private const string StringPart3 = "DotNetGuide技术社区";private readonly string[] _stringPartsArray = { "追逐时光者", "DotNetGuide", "DotNetGuide技术社区" };#region 少量字符串拼接/// <summary>/// 使用 + 操作符拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string PlusOperator(){string result = StringPart1 + " " + StringPart2 + " " + StringPart3;return result;}/// <summary>/// 使用 $ 内插字符串拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string InterpolatedString(){string result = $"{StringPart1} {StringPart2} {StringPart3}";return result;}/// <summary>/// 使用string.Format()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringFormat(){string result = string.Format("{0} {1} {2}", StringPart1, StringPart2, StringPart3);return result;}/// <summary>/// 使用string.Concat()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringConcat(){string result = string.Concat(StringPart1, " ", StringPart2, " ", StringPart3);return result;}/// <summary>/// 使用string.Join()拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringJoin(){string result = string.Join(" ", _stringPartsArray);return result;}/// <summary>/// 使用StringBuilder.Append拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringBuilderAppend(){StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append(StringPart1);stringBuilder.Append(" ");stringBuilder.Append(StringPart2);stringBuilder.Append(" ");stringBuilder.Append(StringPart3);return stringBuilder.ToString();}/// <summary>/// 使用StringBuilder.AppendFormat拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string StringBuilderAppendFormat(){StringBuilder stringBuilder = new StringBuilder();stringBuilder.AppendFormat("{0} {1} {2}", StringPart1, StringPart2, StringPart3);return stringBuilder.ToString();}#endregion}
}

在这里插入图片描述

大量字符串拼接

   using BenchmarkDotNet.Attributes;
using System.Text;namespace BenchmarkDotNetExercise
{[MemoryDiagnoser]//记录内存分配情况public class StringConcatenationBenchmark{private const int IterationCount = 1000;private const string StringPart1 = "追逐时光者";private const string StringPart2 = "DotNetGuide";private const string StringPart3 = "DotNetGuide技术社区";private readonly string[] _stringPartsArray = { "追逐时光者", "DotNetGuide", "DotNetGuide技术社区" };#region 大量字符串拼接/// <summary>/// 使用 + 操作符拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string BigDataPlusOperator(){string result = string.Empty;for (int i = 0; i < IterationCount; i++){result += StringPart1 + " " + StringPart2 + " " + StringPart3;}return result;}/// <summary>/// 使用StringBuilder.Append拼接字符串/// </summary>/// <returns></returns>[Benchmark]public string BigDataStringBuilderAppend(){StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < IterationCount; i++){stringBuilder.Append(StringPart1);stringBuilder.Append(" ");stringBuilder.Append(StringPart2);stringBuilder.Append(" ");stringBuilder.Append(StringPart3);}return stringBuilder.ToString();}#endregion}
}

在这里插入图片描述

http://www.dtcms.com/wzjs/598596.html

相关文章:

  • 做一个网站怎么做数据库做软件跟网站哪个难
  • 南通医院网站建设方案群晖wordpress 月穿
  • ps做游戏下载网站有哪些外贸网址建站
  • 电子商务网站建设与管理考试题价格低不是干粉灭火器的优点
  • 网站添加什么东西才能和用户体验wordpress 建站视频
  • wordpress修改站点logo大小顺义做网站的厂家
  • 网站想做个链接怎么做广州网站建设方案案例
  • 免费的网站app下载wordpress 3.5 下载
  • 中国风html5网站模板wordpress官方教程
  • 推广网站软文南宁做网店
  • 现在网站开发技术有哪些产品网站免费模板下载
  • 做网站 图片素材怎么找房地产建设网站的意义
  • 做彩票网站凡科怎么样
  • 做网站会员功能银行营销案例100例
  • 不用关网站备案中秋网页设计素材网站
  • 门户网站是以什么为主使用WordPress快速建站视频
  • 遥阳科技网站建设网站建设的SOWT分析
  • 制作网站需要的技术江西论坛
  • 网站菜单素材返利 wordpress
  • 网站建设的优势免费的h5
  • 网站 盈利室内设计效果图怎么收费
  • 网站建站公司广州温州开发网站公司哪家好
  • 自己做网站的准备工作网页设计模板与效果图
  • 建站导航20个中国风网站设计欣赏
  • 做好网站优化的方法有哪些?深圳哪些公司需要做网站
  • 网站建设会计分录交互式网站设计怎么做
  • 有关电子商务网站建设与维护的书籍网络集资网站怎么做
  • 帝国cms网站编程怎么学
  • 医院英文网站建设跨境电商最好卖的产品
  • 泉州专门制作网站吉林省建设厅门户网站