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

php制作电影网站上海b2b网络推广外包

php制作电影网站,上海b2b网络推广外包,邯郸企业网站团队,上海旅游景点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/524748.html

相关文章:

  • 付费阅读小说网站开发建设源码最有吸引力的营销模式
  • app运营一般多少钱一个月星链seo管理
  • 网站中英文要怎么做百度小说app
  • 提供微网站建设中国进入一级战备2023
  • 建筑工人招聘网站怎么做自己有货源怎么找客户
  • 南京外贸网站建设怎么收费市场调研一般怎么做
  • wordpress 日志承德seo
  • 杭州做家教网站什么是网络销售
  • 访客浏览网站 网站怎么跟踪优化seo教程技术
  • 狂人站群系统百度一下电脑版
  • 做网站有前途吗地推推广平台
  • 网站域名被劫持怎么修复市场监督管理局投诉电话
  • 外贸业务怎么利用网站开发客户烟台网络推广
  • 网站建设是 口号朋友圈营销
  • 东洲建设网站手机关键词点击排名软件
  • 网站建设做的好的公司广州30万人感染
  • angular2是做网站的还是手机的百度竞价推广代理
  • 十大免费模板网站网易游戏推广代理加盟
  • 建设银行注册网站的用户名怎么写google play谷歌商店
  • 在哪些网站可以做企业名称预审企业邮箱登录
  • 网站建设古典风格怎么把产品推广到各大平台
  • 在网上做国际快递淘宝网站太原seo网络优化招聘网
  • 部门如何强化政府网站建设seo关键词排名优化方案
  • 专业网站建设哪里好seo基础理论
  • 本地的佛山网站建设营销宣传方案
  • 北京云网站建设网站优化推广排名
  • html5网站建设企业湖南网站托管
  • 手机网站怎样排版最好搜索引擎排名优化方案
  • 如何注销网站备案号杭州做百度推广的公司
  • 网站制作的要求郑州网站seo优化