1、數(shù)據(jù)庫訪問性能優(yōu)化
A、盡量減少數(shù)據(jù)庫連接,并充分利用每次數(shù)據(jù)庫連接:連接的創(chuàng)建、打開和關(guān)閉是有開銷的??梢允褂眠B接池
B、合理使用存儲過程:存儲過程是存儲在服務(wù)器端的一組預編譯的SQL。使用存儲過程可以避免對SQL的多次編譯,后續(xù)查詢可以復用之前的執(zhí)行計劃。另外存儲過程可以減少SQL語句網(wǎng)絡(luò)傳輸開銷
C、優(yōu)化SQL語句:這個就太多了,如合理使用索引、視圖,避免復雜子查詢
2、字符串操作性能優(yōu)化
A、使用值類型的ToString()方法
對不同類型進行 + 連接時,會發(fā)生裝箱操作轉(zhuǎn)化為引用類型再添加到字符串中。裝箱操作會在托管堆中分配一個新對象,將原有的值復制到新對象中,代價很高。使用ToString()方法可以避免裝箱,從而提高性能
B、利用StringBuilder類
3、禁用調(diào)試模式
4、只要合適,盡量緩存數(shù)據(jù)和頁面輸出
5、不要依賴代碼中的異常來控制程序正常流程
異常的開銷是很大的。所以慎用異常。
6、使用Page.IsPostBack避免往返過程的不必要處理
void Page_Load(Object sender, EventArgs e) // Set up a connection and command
{
if (!Page.IsPostBack) // 第一次加載時才填充數(shù)據(jù)
{
String query = "select * from Authors where FirstName like '%JUSTIN%'";
myCommand.Fill(ds, "Authors");
myDataGrid.DataBind();
}
}
7、如果不使用會話狀態(tài),可以禁用它或者設(shè)置只讀
A、若要禁用頁的會話狀態(tài),請將 @ Page 指令中的 EnableSessionState 屬性設(shè)置為false。例如:
<%@ Page EnableSessionState="false" %>
B、注意如果頁需要訪問會話變量,但不打算創(chuàng)建或修改它們,則將 @ Page 指令中的 EnableSessionState 屬性設(shè)置為 ReadOnly。
8、利用成熟的工具進行性能測試