自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

可能引發(fā)性能問(wèn)題的幾個(gè)代碼寫法總結(jié)

開發(fā) 后端
本文總結(jié)了可能引發(fā)性能問(wèn)題的幾個(gè)代碼寫法,如tryparse的使用,IndexOf中單雙引號(hào)的使用,關(guān)閉數(shù)據(jù)庫(kù)連接等等。如果你的代碼不幸也占了那么一、兩個(gè),那么修改并對(duì)比一下性能試試看。

可能引發(fā)性能問(wèn)題的幾個(gè)代碼寫法,看看你占哪一個(gè).

1. int.Parse() VS int.TryParse()

你是不是正在這樣寫

  1. int id = 0;  
  2. try{ id = int.Parse(Request["id"]); }  
  3. catch{ id = 0; } 

如果是可以這樣試試

  1. int id = 0;  
  2. int.TryParse(Request["id"], out id); 

前一種寫法,一旦 Request["id"] 是非數(shù)值型的,將引發(fā)一個(gè)異常,引發(fā)異常的開銷是非常巨大的,而后一種則不會(huì)引發(fā)任何異常。

2.string.IndexOf()

你正在這樣寫嗎?

  1. string s = "aaa,bb";  
  2. int pos = s.IndexOf(","); 

其實(shí)對(duì)于單字符的查找,這樣寫會(huì)更好

  1. string s = "aaa,bb";  
  2. int pos = s.IndexOf(',');  

有人會(huì)問(wèn)如果我要找多個(gè)字符呢,那可以試試下面的

  1. string s = "aaa,bb";  
  2. int pos = s.IndexOf("bb", StringComparison.OrdinalIgnoreCase);  

至于 StringComparison 的具體用法可以google或者baidu得到。

3. RegexOptions.Compiled

如果你正在使用正則并且用到了這個(gè)參數(shù),那請(qǐng)你慎重,根據(jù)個(gè)人經(jīng)驗(yàn)使用這個(gè)參數(shù)在訪問(wèn)量比較大的情況下可能會(huì)引發(fā)性能問(wèn)題,比如cpu偏高。如果你表示懷疑,可以嘗試比較使用和不用這個(gè)參數(shù)的情況下哪個(gè)性能會(huì)更好。

4.忘記關(guān)閉數(shù)據(jù)庫(kù)連接

數(shù)據(jù)庫(kù)連接是非常好資源的,所以從打開到關(guān)閉應(yīng)該越短越好。想看看有沒(méi)有忘記關(guān)閉,可以通過(guò)性能監(jiān)視器的 .net Data provider for SqlClient ( 假設(shè)你用的是sqlserver ) 來(lái)查看,具體的參數(shù)說(shuō)明可以通過(guò)google和baidu得到。

5.頻繁的Response.Write()

 你正在這樣做嗎?

  1. Response.Write("這是第1行.< br/>");  
  2. Response.Write("這是第2行.< br/>");  
  3. Response.Write("這是第3行.< br/>"); 

此種寫法頻繁調(diào)用Response.Write() ,根據(jù)經(jīng)驗(yàn),這是相當(dāng)?shù)暮腸pu,改成下面的試試

  1. StringBuilder sb = new StringBuilder();  
  2. sb.Append("這是第1行.< br/>");  
  3. sb.Append("這是第2行.< br/>");  
  4. sb.Append("這是第3行.< br/>");  
  5.  
  6. Response.Write(sb.ToString());  

6. 不必要的重復(fù)操作

  1. List< TopicInfo> list = new List< TopicInfo>();  
  2.  
  3. //從數(shù)據(jù)庫(kù)得到數(shù)據(jù)  
  4. list = GetDataFromDB();  
  5. for(int i = 0;i <  list.Count; i++ )  
  6. {  
  7.     TopicInfo item = list[i];  
  8.       
  9.       
  10. }  

上面的代碼估計(jì)誰(shuí)都看的出來(lái)有什么不好,那下面這個(gè)代碼呢

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. using System.Text.RegularExpressions;  
  6. using System.Web;  
  7.  
  8. public class UrlUBB  
  9. {  
  10.  
  11.         /// < summary>  
  12.         /// 替換UBB里面的url  
  13.         /// < /summary>  
  14.         /// < param name="content">< /param>  
  15.         /// < returns>< /returns>  
  16.         public static string RegularUrl(string content)  
  17.         {  
  18.             if (string.IsNullOrEmpty(content))  
  19.                 return string.Empty;  
  20.  
  21.             if (content.IndexOf(@"(url=", StringComparison.OrdinalIgnoreCase) == -1 || content.IndexOf(@"(/url)", StringComparison.OrdinalIgnoreCase) == -1)  
  22.                 return content;  
  23.  
  24.             Regex reg = new Regex(@"\(url=(?< url>.[^\)]*)\)(?< name>.[^\(]*)\(/url\)");  
  25.  
  26.             string url = string.Empty;  
  27.             string name = string.Empty;  
  28.             string href = string.Empty;  
  29.  
  30.             MatchCollection matches = reg.Matches(content);  
  31.             foreach (Match m in matches)  
  32.             {  
  33.                 if (m.Success)  
  34.                 {  
  35.                     url = regexUrl(m.Groups["url"].ToString());  
  36.                     name = m.Groups["name"].ToString();  
  37.                     href = string.Format("< a href=\"redirect.aspx?goto={0}\">{1}< /a>", url, name);  
  38.                     content = content.Replace(m.ToString(), href);  
  39.                 }  
  40.             }  
  41.             return content;  
  42.     }  
  43. }  

你是否考慮過(guò)這樣的寫法

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. using System.Text.RegularExpressions;  
  6. using System.Web;  
  7.  
  8. public class UrlUBB  
  9. {  
  10.         private static Regex reg = new Regex(@"\(url=(?< url>.[^\)]*)\)(?< name>.[^\(]*)\(/url\)");  
  11.  
  12.         /// < summary>  
  13.         /// 替換UBB里面的url  
  14.         /// < /summary>  
  15.         /// < param name="content">< /param>  
  16.         /// < returns>< /returns>  
  17.         public static string RegularUrl(string content)  
  18.         {  
  19.             if (string.IsNullOrEmpty(content))  
  20.                 return string.Empty;  
  21.  
  22.             if (content.IndexOf(@"(url=", StringComparison.OrdinalIgnoreCase) == -1 || content.IndexOf(@"(/url)", StringComparison.OrdinalIgnoreCase) == -1)  
  23.                 return content;  
  24.  
  25.  
  26.             string url = string.Empty;  
  27.             string name = string.Empty;  
  28.             string href = string.Empty;  
  29.  
  30.             MatchCollection matches = reg.Matches(content);  
  31.             foreach (Match m in matches)  
  32.             {  
  33.                 if (m.Success)  
  34.                 {  
  35.                     url = regexUrl(m.Groups["url"].ToString());  
  36.                     name = m.Groups["name"].ToString();  
  37.                     href = string.Format("< a href=\"redirect.aspx?goto={0}\">{1}< /a>", url, name);  
  38.                     content = content.Replace(m.ToString(), href);  
  39.                 }  
  40.             }  
  41.             return content;  
  42.     }  
  43. }  

如果你的代碼不幸也占了那么一、兩個(gè),那么修改并對(duì)比一下性能試試看,如果你很幸運(yùn)的一個(gè)也沒(méi)占,那么恭喜你,你的程序性能應(yīng)該還不錯(cuò)。

【編輯推薦】

  1. JSP頁(yè)面Tomcat提高性能之王道
  2. Servlet和JSP性能優(yōu)化經(jīng)驗(yàn)談
  3. 淺談編寫高性能的Javascript代碼
  4. J2EE運(yùn)行環(huán)境性能大優(yōu)化
  5. 提高EJB性能十大技巧
責(zé)任編輯:yangsai 來(lái)源: 博客園
相關(guān)推薦

2019-01-07 14:36:36

Go系統(tǒng)開源庫(kù)

2010-01-07 11:21:25

2011-05-20 10:05:13

Oracle性能優(yōu)化

2009-04-24 10:49:57

Oracle性能優(yōu)化錯(cuò)誤

2011-08-23 08:56:30

2022-09-03 15:12:40

AndroidJDK 11升級(jí)

2014-10-31 10:04:57

程序員代碼

2020-11-11 10:00:13

NAT性能內(nèi)核

2023-11-16 17:12:33

數(shù)據(jù)庫(kù)oracle

2024-12-26 09:15:28

2023-11-22 15:34:41

oracleSQL數(shù)據(jù)庫(kù)

2015-11-05 09:02:05

Java代碼性能優(yōu)化

2017-11-06 14:33:54

Web開發(fā)服務(wù)器網(wǎng)絡(luò)

2013-06-20 09:59:12

Javascriptvar

2019-12-25 09:49:12

WebKitWindowsChrome

2013-04-24 11:33:31

Android開發(fā)Android有用習(xí)慣

2021-02-22 07:58:47

內(nèi)存程序變量

2010-07-12 17:28:17

SharePointVS 2010

2020-12-08 05:52:28

js前端算法

2022-09-08 09:45:12

微軟Windows夏令時(shí)
點(diǎn)贊
收藏

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