Asp.net效能最佳化總結(一)

來源:互聯網
上載者:User
最近對項目收尾。整理了項目文檔,看到以前對效能最佳化所做的標記。出於和大家共同討論的目的,發表自己的看法。歡迎大家對此討論,如有錯誤請大家指正。(此文不涉及如cahe 等深層機制應用和研究,只是些膚淺應用和建議)

關於資料處理相關的最佳化

一、             SqlDataRead和Dataset的選擇

Sqldataread優點:讀取資料非常快。如果對返回的資料不需做大量處理的情況下,建議使用SqlDataReader,其效能要比datset好很多。缺點:直到資料讀完才可close掉於資料庫的串連

(SqlDataReader 讀資料是快速向前的。SqlDataReader 類提供了一種讀取從 SQL Server 資料庫檢索的只進資料流的方法。它使用 SQL Server 的本機網路資料轉送格式從資料庫連接直接讀取資料。DataReader需及時顯式的close。可及時的釋放對資料的串連。)

Dataset是把資料讀出,緩衝在記憶體中。缺點:對記憶體的佔用較高。如果對返回的資料需做大量的處理用Dataset比較好些可以減少對資料庫的串連操作。優點:只需串連一次就可close於資料庫的串連

*一般情況下,讀取大量資料,對返回資料不做大量處理用SqlDataReader.對返回資料大量處理用datset比較合適.對SqlDataReader和Dataset的選擇取決於程式功能的實現。

 

二、             ExecuteNonQuery和ExecuteScalar

對資料的更新不需要返回結果集,建議使用ExecuteNonQuery。由於不返回結果集可省掉網路資料轉送。它僅僅返回受影響的行數。如果只需更新資料用ExecuteNonQuery效能的開銷比較小。

ExecuteScalar它只返回結果集中第一行的第一列。使用 ExecuteScalar 方法從資料庫中檢索單個值(例如id號)。與使用 ExecuteReader 方法, 返回的資料執行產生單個值所需的操作相比,此操作需要的代碼較少。

*只需更新資料用ExecuteNonQuery.單個值的查詢使用ExecuteScalar

資料繫結的選擇

三、             資料的綁定DataBinder

        一般的Binder 方法<%# DataBinder.Eval(Container.DataItem, "欄位名") %>

用DataBinder.eval 綁定不必關心資料來源(Dataread或dataset)。不必關心資料的類型eval會把這個資料對象轉換為一個字串。在底層綁定做了很多工作,使用了反射效能。正因為使用方便了,但卻影響了資料效能。

來看下<%# DataBinder.Eval(Container.DataItem, "欄位名") %>。當於dataset綁定時,DataItem其實式一個DataRowView(如果綁定的是一個資料讀取器(dataread)它就是一個IdataRecord。)因此直接轉換成DataRowView的話,將會給效能帶來很大提升。.

<%# ctype(Container.DataItem,DataRowView).Row("欄位名") %>

*對資料的綁定建議使用<%# ctype(Container.DataItem,DataRowView).Row("欄位名") %>。資料量大的時候可提高几百倍的速度。使用時注意2方面:1.需在頁面添加<%@ Import namespace="System.Data"%>.2.注意欄位名的大小寫(要特別注意)。如果和查詢的不一致,在某些情況下會導致比<%# DataBinder.Eval(Container.DataItem, "欄位名") %>還要慢。如果想進一步提高速度,可採用<%# ctype(Container.DataItem,DataRowView).Row(0) %>的方法。不過其可讀性不高。

對查看頁面每個執行過程狀態最簡單的辦法:其頁面的trace屬性為true就可查看細節。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.