天天看點

如何最大限度提高.NET的性能

1. 在資料層分頁資料。可以通過excutereader或者存儲過程實作等。

2. 盡量使用excutereader來讀取資料,excutereader是效率最高的,在microsoft的petshop 4.0全部資料通路都是用excutereader來實作的,除非你對非連接配接有特殊要求(如 smartclient智能用戶端等)。

3. 在非連接配接場合,用datatable比用dataset性能好,除非你要儲存多個關系表。

4. 使用datatable的importrow方法。

有些場合需要把大量資料從一個datatable複制到另一個datatable,使用datatable的importrow方法可以大大提高性能,資料量少時沒多大分别,當資料量到一萬行以上時就可以明顯的提高,可以達到幾倍。

5. 把資料序列化為二進制檔案友善傳輸。

我們在處理dataset,datatable對象時可以序列化為xml檔案,如果要在網絡傳輸,xml檔案會産生記憶體,網絡帶寬等資源問題。這時我們就可以把它序列化為二進制檔案,這樣生成的檔案會減少很多,代碼如下:

filestream fs = new filestream(@"xmldata.bin",filemode.create);

binaryformatter bf = new binaryformatter();

bf.serialize(fs,xmldata);

fs.colse();

這樣生成的二進制檔案稱為xmlbinary,用winhex直接打開還可以看到一些xml标記在裡面,如果資料量很大,這時加一行代碼:

xmldata.remortingformat = serializationformat.binary;

這時生成的檔案稱為truebinary檔案,當處理大量(超過10000行)時生成的檔案尺寸是xmlbinary的幾分之一。序列化的時候會自動儲存模式,這樣解序過程很簡單。我還不知道解序比直接讀取xml性能會下降多少。

6. 合理利用連接配接池。

連接配接池對性能的提高有很大的作用,預設是打開的。預設的min pool size是0,一般設為一個比較小的值,如5。max pool size預設是100,大多數web站點也夠用,大型的适當增大。

7. 使用sqlclr開發

如果你是專注開sql server系列那你應該去研究一下sqlclr,它的功能非常強大,在很多場合都可以提高性能(特别是大型企業級應用)。

8. 通過靜态類來通路app.config/web.config

我們有很多配置資訊都是放在app.config/web.config,通路都會很頻繁,這時建立一個靜态類,所有的屬性都通過靜态類來通路,可以在一定程度提高性能,靜态類隻執行個體化一次,而app.config/web.config會産生很多io操作。