成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

改進(jìn)C#連接字符串的性能

開(kāi)發(fā) 后端
本文演示使用C#連接字符串StringBuilder類(lèi)與傳統(tǒng)的連接技術(shù)相比有哪些好處。.NET框架中的字符串是不變的(即,初始分配后的引用文本是只讀的)。對(duì)于習(xí)慣了C/C++字符串操作技術(shù)的開(kāi)發(fā)人員來(lái)說(shuō),它既提供了很多性能方面的好處,同時(shí)又帶來(lái)了一些挑戰(zhàn)。

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

比 Visual C/C++ 中的 strcat() 更好的C#連接字符串的一項(xiàng)技術(shù)是,分配一個(gè)大字符數(shù)組作為緩沖區(qū),并將字符串?dāng)?shù)據(jù)復(fù)制到緩沖區(qū)中。 在 .NET 框架中,字符串是不變的;不能就地對(duì)字符串進(jìn)行修改。 C# + 連接運(yùn)算符生成一個(gè)新的字符串,在連接大量文本時(shí)會(huì)造成性能下降。

但是,.NET 框架包含一個(gè) StringBuilder 類(lèi),它已經(jīng)專(zhuān)門(mén)為字符串連接進(jìn)行了優(yōu)化。 該類(lèi)與 C/C++ 中使用的字符串?dāng)?shù)組有同樣的好處,并且還能(根據(jù)需要)自動(dòng)增大緩沖區(qū)大小并跟蹤長(zhǎng)度。本文中的示例應(yīng)用程序演示了 StringBuilder 類(lèi)的使用并將其性能與字符串連接技術(shù)進(jìn)行比較。

生成和運(yùn)行演示應(yīng)用程序

啟動(dòng) Visual Studio .NET 并新建一個(gè) Visual C# 控制臺(tái)應(yīng)用程序。
以下代碼使用 += 連接運(yùn)算符和 StringBuilder 類(lèi),分別對(duì)每次 30 個(gè)字符,共 5,000 次連接進(jìn)行計(jì)時(shí)。 將此代碼添加到 Main 過(guò)程中。

  1. const int sLen=30, Loops=5000;  
  2. DateTime sTime, eTime;  
  3. int i;  
  4. string sSource = new String('X', sLen);  
  5. string sDest = "";  
  6. //   
  7. // Time string concatenation.  
  8. //   
  9. sTime = DateTime.Now;  
  10. for(i=0;ieTime = DateTime.Now;  
  11. Console.WriteLine("Concatenation took " + (eTime - sTime).TotalSeconds + " seconds.");  
  12. //   
  13. // Time StringBuilder.  
  14. //   
  15. sTime = DateTime.Now;  
  16. System.Text.StringBuilder sb = new System.Text.StringBuilder((int)(sLen * Loops * 1.1));  
  17. for(i=0;isDest = sb.ToString();  
  18. eTime = DateTime.Now;  
  19. Console.WriteLine("String Builder took " + (eTime - sTime).TotalSeconds + " seconds.");  
  20. //   
  21. // Make the console window stay open  
  22. // so that you can see the results when running from the IDE.  
  23. //   
  24. Console.WriteLine();  
  25. Console.Write("Press Enter to finish ... ");  
  26. Console.Read(); 

保存應(yīng)用程序,按 F5 鍵編譯并運(yùn)行該應(yīng)用程序。控制臺(tái)窗口應(yīng)輸出類(lèi)似下面的顯示:
Concatenation took 6.208928 seconds.
String Builder took 0 seconds.

Press ENTER to finish ...

按 ENTER 鍵停止運(yùn)行應(yīng)用程序并關(guān)閉控制臺(tái)窗口。

C#連接字符串疑難解答

如果您是在支持?jǐn)?shù)據(jù)流式處理的環(huán)境(如 ASPX Web 窗體)中,或者您的應(yīng)用程序能將數(shù)據(jù)寫(xiě)入磁盤(pán),則請(qǐng)考慮避免字符串連接或 StringBuilder 的緩沖負(fù)擔(dān),而使用 Response.Write 方法或適合數(shù)據(jù)流的適當(dāng)方法將數(shù)據(jù)直接寫(xiě)入數(shù)據(jù)流。

請(qǐng)盡量再次使用現(xiàn)有的 StringBuilder 類(lèi),而不要在每次需要時(shí)都重新分配。這樣可限制堆的增長(zhǎng)并減少垃圾集合。 在這兩種情況下,與使用 + 運(yùn)算符相比,使用 StringBuilder 類(lèi)可以更有效地使用堆。

【編輯推薦】

  1. 如何用C#和ADO.NET訪(fǎng)問(wèn)
  2. 淺析C# Switch語(yǔ)句
  3. C#驗(yàn)證輸入方法詳解
  4. 簡(jiǎn)單介紹C# 匿名方法
  5. C# FileSystemWatcher對(duì)象
責(zé)任編輯:彭凡 來(lái)源: 微軟
相關(guān)推薦

2009-09-02 16:21:20

C#字符串

2009-08-07 14:02:12

C#數(shù)據(jù)庫(kù)連接字符串

2009-08-20 17:55:43

C#連接Oracle數(shù)

2025-03-27 03:20:00

C#開(kāi)發(fā)字符串

2009-08-20 18:23:29

C#中SQL連接字符串

2009-08-07 14:46:59

C#匹配字符串

2009-08-06 16:01:09

C#字符串函數(shù)大全

2009-08-07 14:15:21

C#字符串分割

2009-08-07 14:22:56

C#字符串搜索

2009-08-07 14:34:33

C#模式字符串

2009-08-24 17:06:37

C#字符串

2009-08-26 13:24:54

C#字符串

2009-08-07 13:50:11

C#字符串

2009-08-24 13:04:44

操作步驟C#字符串

2024-12-23 07:38:20

2009-08-20 17:30:02

C#連接字符串

2009-08-07 15:49:46

使用C#字符串

2009-08-06 17:24:08

C#字符串

2009-08-28 10:39:37

C#數(shù)值字符串

2009-08-07 15:58:54

C#字符串插入html
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费在线观看黄视频 | 亚洲网站在线观看 | 欧美一卡二卡在线观看 | 中文字幕91 | 青青草视频网站 | 亚洲精品国产一区 | 欧美高清视频 | 毛片免费看 | 熟女毛片 | 91综合网 | 欧美一级片在线观看 | 国产偷录叫床高潮录音 | 欧美精品一区在线 | 超碰在线播 | 中文久久 | 麻豆精品久久久 | 成人免费网站www网站高清 | 国产精品综合色区在线观看 | 欧美日韩一二三区 | 91精品久久久久久久久久入口 | 国产成人小视频 | 欧美 中文字幕 | 亚洲1区| 久久久www成人免费无遮挡大片 | 一级黄色片一级黄色片 | 亚洲精品观看 | 午夜a√ | 国产精品久久欧美久久一区 | 一区二区三区四区免费在线观看 | 日韩成人在线视频 | 91pron在线 | 青青久在线视频 | 亚洲 中文 欧美 | 亚洲精品电影在线观看 | 国产视频第一页 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 亚洲成年在线 | av中文在线播放 | 日本成人二区 | 国产综合精品一区二区三区 | 日韩欧美在线观看 |