提高精簡框架集程式的效能

2021-08-22 08:06:39 字數 4149 閱讀 1347

以下程式設計做法可以節省記憶體和改善裝置應用程式的效能。

使用 windows 窗體和圖形節省記憶體

·對提供beginupdate 和endupdate 方法的控制項使用這兩種方法,提供這兩種方法的控制項包括combobox

、listbox

、listview

、toolstripcombobox

和treeview

。·重新定位控制項時,使用suspendlayout

和resumelayout

方法。·在後台載入其他窗體,使用資料來填充控制項,然後再使用show

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

·使用脫屏點陣圖。有關示例,請參見如何:繪製後台影象

。·重寫控制項上的onkeydown

、onkeypress

和onkeyup

方法,而不是新增按鍵事件處理程式。

使用資料和字串節省記憶體

·在for 迴圈中使用整數變數(int32

或int64

),而不使用物件變數。

·避免使用列舉的tostring

方法,因為它會搜尋元資料表,從而影響效能。

·避免outofmemoryexception

錯誤。如果沒有足夠的記憶體分配給內部使用或分配給新物件例項,公共語言執行庫可能會引發此異常。要避免此異常,應避免編寫占用64k 或更多記憶體的大方法。

·移除system.sr.dll,它包含異常對話方塊的錯誤資訊字串。部署應用程式時可以不使用此檔案,從而節省記憶體。如果存在system.sr.dll,則.net compact framework 將動態載入system.sr.dll 中包含的錯誤字串。

如果裝置中不存在此.dll 檔案,則所有異常都包含訊息「無法載入資源程式集」。不過,在開發期間將system.sr.dll 引用新增到microsoft visual studio 2005

專案中總是有用的,因為這樣您將看到有意義的異常。

·字串是不可變的,因此,每次修改該字串時都會建立新的string

物件。構造需經常修改的字串時,請考慮使用stringbuilder

。·如果您知道用於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 塊的系統開銷。

·盡量使用乙個平台呼叫多做工作,盡量少用多個呼叫。

在集合中節省記憶體

·如果集合基於陣列,請使用索引器。

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

·使用泛型集合以避免值型別的裝箱和取消裝箱產生的系統開銷。定義您自己的優化集合可實現最佳效能。

在 xml 中節省記憶體

·使用xmltextreader

和xmltextwriter

代替xmldocument

(因為它占用的記憶體較多)。

·指定xmlreadersettings

和xmlwritersettings

的設定以改善效能。如果ignorewhitespace

和ignorecomments

兩個屬性值適用,它們可以顯著改善效能。

·使用utf-8、ascii 和utf-16 字元編碼,它們比ansi 和windows **頁編碼更快。

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

·當從xml 源填充dataset

窗體時,應將列對映為屬性並使用型別化dataset。

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

o架構推理。

o巢狀表。

o多個datetime 列。為了獲得更好的效能,請使用ticks

屬性值。

·使用xml 反序列化時,遵循以下準則可改善效能:

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

o基於屬性資料的xml 比基於元素資料的xml 要快。

o如果適用,使用system.xml.xmlnodereader.skip

方法。o

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

·為xml 序列化的每一種型別分別使用乙個xmlserializer

例項,以減少用於搜尋元資料的時間。

·由於序列化大量xml 可能會耗盡記憶體,應考慮通過使用binaryreader

和binarywriter

生成自定義二進位制序列化機制。

使用 web 服務時節省記憶體

·讀取和編寫dataset 時,應使用diffgram。有關更多資訊,請參見diffgram

。·以xml 格式將遠端dataset 及其架構儲存到裝置。

·初始螢幕期間建立乙個簡單的web 服務方法呼叫,因為第乙個呼叫比後面的呼叫要慢。

·小心處理網路和資料錯誤。

·某些情況下,可以手動將dataset 序列化為xml 字串,然後執行乙個web 服務呼叫,這樣可以提高效能。

在高階程式設計中節省記憶體

·非同步處理大操作。

·避免虛擬呼叫。.net compact framework 執行庫虛擬呼叫比靜態呼叫或例項呼叫大約慢30%。由於資源受約束,.net compact framework 不使用vtable,因此必須通過轉換類和介面層次結構來呼叫方法,但這是一種代價很高的操作。.net compact framework 維護已解析的虛擬呼叫的快取,因此在大多數情況下,無須重新解釋呼叫。

·盡可能使用欄位而不使用屬性。

·定義值型別時,重寫gethashcode

和equals

方法。如果未重寫它們,則執行庫會在基valuetype

類中使用這些方法的普通版本。

·謹慎使用對映。出於調研目的將對映與非例項化類一起使用會影響應用程式中的例項化物件的效能。

·確保resx 檔案中的託管資源具有完全限定名,並且這些資源準確無誤。它們必須具有正確的版本和publickeytoken 字段。為未正確指定的型別查詢最合適的替代型別會影響效能。

·請注意,在某些情況下,直接從檔案讀取應用程式資料就足夠了,這比使用resourcemanager

效率更高。resourcemanager 可以在定位您的二進位制資源之前在檔案系統中探測多個位置來查詢最匹配的附屬程式集。為作業使用適當的工具。

怎麼提高iOS程式的效能

1,用arc去管理記憶體,可以避免記憶體洩露,及時 不使用的物件,提高執行效率。2,重用機制和延遲載入,如uitableviewcell的重用,以及重用大開銷物件,例如nsdateformatter和nscalendar 3,可以的話設定檢視為不透明,opaque yes,這會允許系統以最優的方式繪...

scrapy框架的日誌及提高效能

目錄實戰 使用scrapy crawl spiderfilename執行程式時,在終端裡列印輸出的就是scrapy的日誌資訊。日誌資訊的種類 error 一般錯誤 warning 警告 info 一般的資訊 debug 除錯資訊設定日誌資訊指定輸出 在settings.py配置檔案中,加入 log ...

巧用快取提高asp程式的效能

巧用快取提高asp程式的效能 onlytiancai 原作 www.knowsky.com dim wawa if isempty wawa then wawa wawa get rows strconn,strsql end if wawa get list wawa end function p...