Ø 相對於原來的for語句foreach具有更好的執行效率,foreach的平均花費時間只有for的30%。通過測試結果在for和foreach都可以使用的情況下,我們推薦使用效率更高的foreach。另外,用for寫入資料時間大約是讀取資料時間的10倍左右;
Ø 在asp.net程式中,使用sa帳號的是一種非常不安全的做法,它具有在資料庫上執行任何操作的許可權。駭客可以調用類似於xp_cmdshell這樣的擴充預存程序進行攻擊;
Ø 在處理資料互動的時候,盡量將組織SQL語句的處理放到中介層(比如專門的資料操作類、預存程序等),這是防止注入式攻擊的有效方法;
Ø 避免到伺服器的不必要的往返過程。使用 Page.IsPostBack 避免對往返過程執行不必要的處理;
Ø 一定要禁用偵錯模式;
Ø 一般情況下,讀取大量資料,對返回資料不做大量處理用SqlDataReader.對返回資料大量處理用DatSet比較合適.對SqlDataReader和DataSet的選擇取決於程式功能的實現;
Ø 資料繫結建議使用<%# ctype(Container.DataItem,DataRowView).Row("欄位名") %>。資料量大的時候可提高几百倍的速度;
Ø 使用“短路”的邏輯運算
在VB.net的邏輯運算中使用 Andalso 代替 And,OrElse 代替Or,
在C#的邏輯運算中用使用&& 代替 &,用||代替|.
所謂“短路”運算是指-編譯的代碼可以根據一個運算式的計算結果跳過對另一運算式的計算,例如:
邏輯運算 if A and B then,其中A和B是運算式,代碼運行時,要分別計算A 和 B的值,而如果是
if A Andalso B then,A先計算,如果A的值為true,則不再計算B的值。這樣如果B的計算複雜或
涉及程序呼叫,使用Andalso則會減小不必要的效能損耗。
對於or和orelse,情況和上面相同不再廢話。
Ø 使用+=、-= 等簡化操作符
例如原有運算式 A=A+B
改為A+=B
這樣不僅減少了敲入代碼的數量,而且由於變數A只出現一次,在運行時也提高了系統的效能
類此的操作符還有*=、"=、/=、&=等
Ø 使用stringBuilder代替string
string類型在記憶體中是不可變的,對已經定義的string類型的變數所做的任何修改,系統實際在
記憶體中都是建立一個string,而sringbuilder class則是在記憶體中建立對象,對其操作都是對這
個對象的修改。因此使用stringBuilder代替string會提高運行時的效能。
Ø 在for迴圈內部定義變數
例如:for(int i=1;i<=10;i++)
{
....
}
而不是:int i;
for(i=1;i<=10;i++)
{
....
}
Ø 設定Option Strict 啟用
在vs.net中啟用Option Strict,要求代碼中的資料類型嚴格轉換,避免由系統轉換造成的效能影響
Ø 在VB.net類型轉換時考慮使用DirectCast代替Ctype
在vb.net中如果將某類型對象轉成其繼承型對象,例如將一個“control” 轉成一個textbox時(textbox從Control繼承)請 使用DirectCast代替Ctype,這會提高系統效能,但是如果要將一個Integer轉成 String ,則不能 使用,因為Integer和String類型不是繼承關係。
在C#中沒有和DirectCast相應的函數。