一 String和StringBuilder
少量的字符串操作不宜采用StringBuilder。
由于string是不可變得對象,對于string的疊加,每次操作都會生成一個新的string對象。所以針對大量string的操作時,我們會采用StringBuilde。但似乎很多人都知道這一點,所以只要字符串相加,不管三七二一都用StringBuilder。其實這是個誤區,在這里要注意"大量"一詞,少量的字符串操作用StringBuilder反而得不償失。
比如下面的兩種寫法:
string sql = "insert into table (,,,)";
sql += " values ('')";和
StringBuilder sb = new StringBuilder();
sb.Append("insert into table (,,,)");
sb.Append(" values ('')");
string s = sb.ToString();宜采取第一種寫法。因為只有兩個字符串的相加,談不上大量。如果用StringBuilder,最后還需要轉換成string,結果性能反而差一些。
二 慎用異常
由于程序拋出一個異常,就會創建一個異常對象,然后應用程序會在Catch塊中捕獲該異常,造成性能影響非常大。
比如:
int OrderID;
try
{
OrderID = Convert.ToInt32(this.txtOrderID.Text);
}
catch(Exception e)
{
OrderID = .
}
這樣的代碼很不合適,造成的性能開銷非常大。應該在客戶端寫js代碼先去驗證txtOrderID是否符合要求。
三 關于session, Request
Session:
很多人喜歡用Session來保存持久對象的值。 但是當你的程序部署在多臺服務器上做負載均衡時,可能會得不到Session保存的變量的值。 另外,由于Session是服務器端的內建對象,每開啟一個Session對象,都在服務器上占用一些資源。
Request:
在頁面間傳值取值時,看到很多人都這么寫代碼:
string CustomerName = this.Request["txtCustomerName"].ToString();
其實后面的ToSTring()多此一舉。this.Request["...."]本來就是string類型的,不必再去ToString()一下。
今天就寫那么多吧,要還有其他問題,再補充。
http://www.49028c.com/Ring1981/archive/2006/08/04/436612.html
新聞熱點
疑難解答