文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么改进C#连接字符串的性能

2023-06-17 23:40

关注

本篇内容主要讲解“怎么改进C#连接字符串的性能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么改进C#连接字符串的性能”吧!

.NET 框架中的C#连接字符串描述

比 Visual C/C++ 中的 strcat() 更好的C#连接字符串的一项技术是,分配一个大字符数组作为缓冲区,并将字符串数据复制到缓冲区中。 在 .NET 框架中,字符串是不变的;不能就地对字符串进行修改。 C# + 连接运算符生成一个新的字符串,在连接大量文本时会造成性能下降。

但是,.NET 框架包含一个 StringBuilder 类,它已经专门为字符串连接进行了优化。 该类与 C/C++ 中使用的字符串数组有同样的好处,并且还能(根据需要)自动增大缓冲区大小并跟踪长度。本文中的示例应用程序演示了 StringBuilder 类的使用并将其性能与字符串连接技术进行比较。

生成和运行演示应用程序

启动 Visual Studio .NET 并新建一个 Visual C# 控制台应用程序。
以下代码使用 += 连接运算符和 StringBuilder 类,分别对每次 30 个字符,共 5,000 次连接进行计时。 将此代码添加到 Main 过程中。

const int sLen=30, Loops=5000;  DateTime sTime, eTime;  int i;  string sSource = new String('X', sLen);  string sDest = "";  //   // Time string concatenation.  //   sTime = DateTime.Now;  for(i=0;ieTime = DateTime.Now;  Console.WriteLine("Concatenation took " + (eTime - sTime).TotalSeconds + " seconds.");  //   // Time StringBuilder.  //   sTime = DateTime.Now;  System.Text.StringBuilder sb = new System.Text.StringBuilder((int)(sLen * Loops * 1.1));  for(i=0;isDest = sb.ToString();  eTime = DateTime.Now;  Console.WriteLine("String Builder took " + (eTime - sTime).TotalSeconds + " seconds.");  //   // Make the console window stay open  // so that you can see the results when running from the IDE.  //   Console.WriteLine();  Console.Write("Press Enter to finish ... ");  Console.Read();

保存应用程序,按 F5 键编译并运行该应用程序。控制台窗口应输出类似下面的显示:
Concatenation took 6.208928 seconds.
String Builder took 0 seconds.

Press ENTER to finish ...

按 ENTER 键停止运行应用程序并关闭控制台窗口。

C#连接字符串疑难解答

如果您是在支持数据流式处理的环境(如 ASPX Web 窗体)中,或者您的应用程序能将数据写入磁盘,则请考虑避免字符串连接或 StringBuilder 的缓冲负担,而使用 Response.Write 方法或适合数据流的适当方法将数据直接写入数据流。

请尽量再次使用现有的 StringBuilder 类,而不要在每次需要时都重新分配。这样可限制堆的增长并减少垃圾集合。 在这两种情况下,与使用 + 运算符相比,使用 StringBuilder 类可以更有效地使用堆。

到此,相信大家对“怎么改进C#连接字符串的性能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯