怎么提高.NETFramework的性能

這篇文章主要講解了“怎么提高.NET Framework的性能”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么提高.NET Framework的性能”吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),南丹企業(yè)網(wǎng)站建設(shè),南丹品牌網(wǎng)站建設(shè),網(wǎng)站定制,南丹網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,南丹網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

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

使用 Windows 窗體和圖形節(jié)省內(nèi)存

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

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

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

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

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

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

使用數(shù)據(jù)和字符串節(jié)省內(nèi)存

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

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

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

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

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

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

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

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

與本機代碼進行交互時節(jié)省內(nèi)存

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

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

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

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

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

盡量使用一個平臺調(diào)用多做工作,盡量少用多個調(diào)用。

在集合中節(jié)省內(nèi)存

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

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

使用泛型集合以避免值類型的裝箱和取消裝箱產(chǎn)生的系統(tǒng)開銷。定義您自己的優(yōu)化集合可實現(xiàn)***.NET Framework性能。

在 XML 中節(jié)省內(nèi)存

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

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

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

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

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

填充 DataSet 時,應(yīng)避免填充以下各項:

架構(gòu)推理。

嵌套表。

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

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

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

基于屬性數(shù)據(jù)的 XML 比基于元素數(shù)據(jù)的 XML 要快。

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

如果性能很重要,應(yīng)考慮二進制序列化。

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

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

使用 Web 服務(wù)時節(jié)省內(nèi)存

讀取和編寫 DataSet 時,應(yīng)使用 DiffGram。有關(guān)更多信息,請參見 DiffGram。

以 XML 格式將遠程 DataSet 及其架構(gòu)保存到設(shè)備。

初始屏幕期間創(chuàng)建一個簡單的 Web 服務(wù)方法調(diào)用,因為***個調(diào)用比后面的調(diào)用要慢。

小心處理網(wǎng)絡(luò)和數(shù)據(jù)錯誤。

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

在高級編程中節(jié)省內(nèi)存

異步處理大操作。

避免虛擬調(diào)用。.NET Compact Framework 運行庫虛擬調(diào)用比靜態(tài)調(diào)用或?qū)嵗{(diào)用大約慢 30%。由于資源受約束,.NET Compact Framework 不使用 vtable,因此必須通過轉(zhuǎn)換類和接口層次結(jié)構(gòu)來調(diào)用方法,但這是一種代價很高的操作。.NET Compact Framework 維護已解析的虛擬調(diào)用的緩存,因此在大多數(shù)情況下,無須重新解釋調(diào)用。

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

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

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

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

請注意,在某些情況下,直接從文件讀取應(yīng)用程序數(shù)據(jù)就足夠了,這比使用 ResourceManager 效率更高。ResourceManager 可以在定位您的二進制資源之前在文件系統(tǒng)中探測多個位置來查找最匹配的附屬程序集。為作業(yè)使用適當?shù)墓ぞ咛岣?NET Framework性能。

感謝各位的閱讀,以上就是“怎么提高.NET Framework的性能”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么提高.NET Framework的性能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當前名稱:怎么提高.NETFramework的性能
文章源于:http://muchs.cn/article44/gpjche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航全網(wǎng)營銷推廣、網(wǎng)站收錄、用戶體驗、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)