成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET Framework性能的提高方法介紹

開發 后端
.NET Framework性能的提高方法有很多種。我們在這里就為大家總結了幾種比較常見的實用的提高.NET Framework性能的方法。

開發人員在進行.NET Framework開發代碼的時候,通常都會想通過各種方法來進行性能的提高。我們今天就為大家介紹幾種.NET Framework性能的提高方法,希望能對大家有所幫助,提高大家的編程效率。#t#

使用 Windows 窗體和圖形節省內存

對提供 BeginUpdate 和 EndUpdate 方法的控件使用這兩種方法,提供這兩種方法的控件包括 ComboBox、ListBox、ListView、ToolStripComboBox 和 TreeView。

重新定位控件時,使用 SuspendLayout 和 ResumeLayout 方法提高.NET Framework性能。

在后臺加載其他窗體,使用數據來填充控件,然后再使用 Show 方法。

將事件處理代碼限制為僅執行重要任務,以便掛起過程可以繼續。

使用脫屏位圖。有關示例,請參見如何:繪制后臺圖像。

重寫控件上的 OnKeyDown、OnKeyPress 和 OnKeyUp 方法,而不是添加按鍵事件處理程序。

使用數據和字符串節省內存

在 for 循環中使用整數變量(Int32 或 Int64),而不使用對象變量。

避免使用枚舉的 ToString 方法,因為它會搜索元數據表,從而影響.NET Framework性能。

避免 OutOfMemoryException 錯誤。如果沒有足夠的內存分配給內部使用或分配給新對象實例,公共語言運行庫可能會引發此異常。要避免此異常,應避免編寫占用 64K 或更多內存的大方法。

移除 System.SR.dll,它包含異常對話框的錯誤信息字符串。部署應用程序時可以不使用此文件,從而節省內存。如果存在 System.SR.dll,則 .NET Compact Framework 將動態加載 System.SR.dll 中包含的錯誤字符串。

如果設備中不存在此 .dll 文件,則所有異常都包含消息“無法加載資源程序集”。不過,在開發期間將 System.SR.dll 引用添加到 Microsoft Visual Studio 2005 項目中總是有用的,因為這樣您將看到有意義的異常。

字符串是不可變的,因此,每次修改該字符串時都會創建新的 String 對象。構造需經常修改的字符串時,請考慮使用 StringBuilder提高.NET Framework性能。

如果您知道用于 DateTime 序列化的確切格式,請為 DateTime 使用 ParseExact 方法。否則,DateTime 分析器將按順序嘗試應用多個特定于區域性的格式。

限制打開 SqlCeCommand 對象的數量,并在完成后釋放它們。

與本機代碼進行交互時節省內存

在平臺調用操作中,使用可直接復制到本機結構中的類型,這樣的類型在托管和非托管內存中有一種通用表示形式,如 Int32 或 IntPtr。對于大于 32 位的可直接復制到本機結構中的值類型來說,通過引用傳遞比通過值傳遞更快。有關可直接復制到本機結構中的類型的更多信息,請參見 .NET Compact Framework 中可直接復制到本機結構中的類型。

為函數簽名中的參數使用 InAttribute 和 OutAttribute 屬性可以減少不必要的封送處理。

使用 Marshal 類中的方法手動在 IntPtr 和托管對象之間轉換,如 PtrToStructure、PtrToStringBSTR、GetObjectForNativeVariant 和 GetObjectForIUnknown。

使用 Prelink 和 PrelinkAll 方法來引發支持本機到托管調用的存根 (stub) 的 JIT 編譯。

如果期望您的本機 COM 對象通常情況下返回 S_FALSE,或其他非 S_OK HRESULT 值,則應將 PreserveSig 字段設置為 true,并使托管簽名與本機簽名匹配。這就避免了運行庫將 HRESULT 值轉換為 COM 調用上的異常時必需的 try/catch 塊的系統開銷。

盡量使用一個平臺調用多做工作,盡量少用多個調用。

在集合中節省內存

如果集合基于數組,請使用索引器。

一旦有機會,就指定集合的大小,因為動態調整大小可以大大增加額外的存儲。

使用泛型集合以避免值類型的裝箱和取消裝箱產生的系統開銷。定義您自己的優化集合可實現***.NET Framework性能。

在 XML 中節省內存

使用 XmlTextReader 和 XmlTextWriter 代替 XmlDocument(因為它占用的內存較多)。

指定 XmlReaderSettings 和 XmlWriterSettings 的設置以改善性能。如果 IgnoreWhitespace 和 IgnoreComments 兩個屬性值適用,它們可以顯著改善性能。

使用 UTF-8、ASCII 和 UTF-16 字符編碼,它們比 ANSI 和 Windows 代碼頁編碼更快。

避免使用用于分析的架構,因為這種架構需要更多的驗證工作。

當從 XML 源填充 DataSet 窗體時,應將列映射為屬性并使用類型化 DataSet。

填充 DataSet 時,應避免填充以下各項:

架構推理。

嵌套表。

多個 DateTime 列。為了獲得更好的性能,請使用 Ticks 屬性值。

使用 XML 反序列化時,遵循以下準則可改善.NET Framework性能:

使元素和屬性名盡量保持簡短,因為每個字符都必須經過驗證。

基于屬性數據的 XML 比基于元素數據的 XML 要快。

如果適用,使用 System.Xml.XmlNodeReader.Skip 方法。

如果性能很重要,應考慮二進制序列化。

為 XML 序列化的每一種類型分別使用一個 XmlSerializer 實例,以減少用于搜索元數據的時間。

由于序列化大量 XML 可能會耗盡內存,應考慮通過使用 BinaryReader 和 BinaryWriter 生成自定義二進制序列化機制。

使用 Web 服務時節省內存

讀取和編寫 DataSet 時,應使用 DiffGram。有關更多信息,請參見 DiffGram。

以 XML 格式將遠程 DataSet 及其架構保存到設備。

初始屏幕期間創建一個簡單的 Web 服務方法調用,因為***個調用比后面的調用要慢。

小心處理網絡和數據錯誤。

某些情況下,可以手動將 DataSet 序列化為 XML 字符串,然后執行一個 Web 服務調用,這樣可以提高.NET Framework性能。

在高級編程中節省內存

異步處理大操作。

避免虛擬調用。.NET Compact Framework 運行庫虛擬調用比靜態調用或實例調用大約慢 30%。由于資源受約束,.NET Compact Framework 不使用 vtable,因此必須通過轉換類和接口層次結構來調用方法,但這是一種代價很高的操作。.NET Compact Framework 維護已解析的虛擬調用的緩存,因此在大多數情況下,無須重新解釋調用。

盡可能使用字段而不使用屬性。

定義值類型時,重寫 GetHashCode 和 Equals 方法。如果未重寫它們,則運行庫會在基 ValueType 類中使用這些方法的普通版本。

謹慎使用映射。出于調研目的將映射與非實例化類一起使用會影響應用程序中的實例化對象的.NET Framework性能。

確保 RESX 文件中的托管資源具有完全限定名,并且這些資源準確無誤。它們必須具有正確的版本和 PublicKeyToken 字段。為未正確指定的類型查找最合適的替代類型會影響性能。

請注意,在某些情況下,直接從文件讀取應用程序數據就足夠了,這比使用 ResourceManager 效率更高。ResourceManager 可以在定位您的二進制資源之前在文件系統中探測多個位置來查找最匹配的附屬程序集。為作業使用適當的工具提高.NET Framework性能。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-05 18:21:33

.NET Framew

2009-07-20 17:07:30

提高ASP.NET性能

2009-12-15 11:28:34

.NET Framew

2009-07-20 16:12:21

ASP.NET Fra

2009-09-18 09:16:06

.NET垃圾回收

2011-05-24 15:15:12

mysql性能

2010-01-05 13:56:37

2009-06-29 10:19:42

.NET Micro性能優化

2010-01-06 17:12:26

.Net Framew

2009-07-20 16:04:37

ASP.NET fra

2010-05-07 08:59:50

ASP.NET

2010-01-05 17:39:10

.NET Framew

2011-10-14 10:37:54

ASP.NET

2010-01-06 18:47:21

.NET Compac

2010-01-05 16:20:46

.NET Framew

2011-07-07 09:03:12

ASP.NET

2009-08-06 11:12:17

提高GDI編程性能

2009-08-05 15:13:32

使用Cache提高AS

2009-12-31 16:18:44

Silverlight

2010-01-05 10:17:35

.NET Framew
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区四区五区 | 操操操操操 | 久久久久国产 | av日日操 | 免费h在线| 亚洲不卡视频 | 国产一级免费在线观看 | 国产精品美女久久久久久久久久久 | 国产乱码精品一区二区三区中文 | 91资源在线| 免费观看毛片 | 日韩乱码在线 | 久久精品av麻豆的观看方式 | 91精品国产91久久久久久丝袜 | 欧美激情一区二区 | 色本道 | 久久久69 | 在线免费观看毛片 | 国产午夜精品一区二区三区嫩草 | 欧美日韩电影免费观看 | 中文字幕精品一区二区三区在线 | 日韩电影一区二区三区 | 国产免费让你躁在线视频 | 久久av资源网 | 国产在线视频一区 | 亚洲久久一区 | 自拍视频在线观看 | 日韩精品视频在线观看一区二区三区 | 久久人人网 | 国产一区二区三区亚洲 | 在线伊人 | 性一交一乱一透一a级 | 在线观看中文字幕dvd播放 | 国产日韩欧美一区二区 | av在线一区二区三区 | 亚洲日韩中文字幕一区 | 亚洲一区二区三区免费在线观看 | 中文字幕第十一页 | 国产精品久久欧美久久一区 | 国产黄色av电影 | 黄页网址在线观看 |