日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
改進C#連接字符串的性能

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

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

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

生成和運行演示應用程序

啟動 Visual Studio .NET 并新建一個 Visual C# 控制臺應用程序。
以下代碼使用 += 連接運算符和 StringBuilder 類,分別對每次 30 個字符,共 5,000 次連接進行計時。 將此代碼添加到 Main 過程中。

 
 
 
  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(); 

保存應用程序,按 F5 鍵編譯并運行該應用程序。控制臺窗口應輸出類似下面的顯示:
Concatenation took 6.208928 seconds.
String Builder took 0 seconds.

Press ENTER to finish ...

按 ENTER 鍵停止運行應用程序并關閉控制臺窗口。

C#連接字符串疑難解答

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

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

【編輯推薦】

  1. 如何用C#和ADO.NET訪問
  2. 淺析C# Switch語句
  3. C#驗證輸入方法詳解
  4. 簡單介紹C# 匿名方法
  5. C# FileSystemWatcher對象

名稱欄目:改進C#連接字符串的性能
鏈接地址:http://www.5511xx.com/article/cdpsdci.html