優化顯示速度
根據您用于顯示用戶界面控件和應用程序窗體的技術,您可以用多種不同的方式來優化應用程序的顯示速度。當您的應用程序啟動時,您應該考慮盡可能地顯示簡單的用戶界面。這將減少啟動時間,并且向用戶呈現整潔且易于使用的用戶界面。而且,您應該努力避免引用類以 及在啟動時加載任何不會立刻需要的數據。這將減少應用程序和 .NET Framework 初始化時間,并且提高應用程序的顯示速度。當您需要顯示對話框或窗體時,您應該在它們做好顯示準備之前使其保持隱藏狀態,以便減少需要的繪制工作量。這將有助于確保窗體僅在初始化之后顯示。如果您的應用程序具有的控件含有覆蓋整個客戶端表面區域的子控件,則您應該考慮將控件背景樣式設置為不透明。這可以避免在發生每個繪制事件時重繪控件的背景。您可以通過使用 SetStyle 方法來設置控件的樣式。使用 ControlsStyles.Opaque 枚舉可以指定不透明控件樣式。您應該避免任何不必要的控件重新繪制操作。一種方法是在設置控件的屬性時隱藏控件。在 OnPaint 事件中具有復雜繪圖代碼的應用程序能夠只重繪窗體的無效區域,而不是繪制整個窗體。OnPaint 事件的 PaintEventArgs 參數包含一個 ClipRect 結構,它指示窗口的哪個部分無效。這可以減少用戶等待查看完整顯示的時間。使用標準的繪圖優化,例如,剪輯、雙緩沖和 ClipRectangle。這還將通過防止對不可見或要求重繪的顯示部分執行不必要的繪制操作,從而有助于改善智能客戶端應用程序的顯示性能。
如果您的顯示包含動畫或者經常更改某個顯示元素,則您應該使用雙緩沖或多緩沖,在繪制當前圖像的過程中準備下一個圖像。System.Windows.Forms 命名空間中的 ControlStyles 枚舉適用于許多控件,并且 DoubleBuffer 成員可以幫助防止閃爍。啟用 DoubleBuffer 樣式將使您的控件繪制在離屏緩沖中完成,然后同時繪制到屏幕上。盡管這有助于防止閃爍,但它的確為分配的緩沖區使用了更多內存。
使用性能日志和警報
性能日志和警報是作為 Windows 操作系統的一部分發行的一種管理性能監控工具。它依靠由各種 Windows 組件、子系統和應用程序發布的性能計數器,使您可以跟蹤資源使用情況以及針對時間以圖形方式繪制它們。您可以使用 Performance Logs and Alerts 來監控標準的性能計數器(例如,內存使用情況或處理器使用情況),或者您可以定義您自己的自定義計數器來監控應用程序特定的活動。.NET CLR 提供了許多有用的性能計數器,它們使您可以洞察應用程序性能的好壞。關系比較大的一些性能對象是:
1).NET CLR 內存。提供有關托管 .NET 應用程序內存使用情況的數據,包括應用程序正在使用的內存數量以及對未使用的對象進行垃圾回收所花費的時間。
2).NET CLR 加載。提供有關應用程序正在使用的類和應用程序域的數量的數據,并且提供有關它們的加載和卸載速率的數據。
3).NET CLR 鎖和線程。提供與應用程序內使用的線程有關的性能數據,包括線程個數以及試圖同時對受保護的資源進行訪問的線程之間的爭用率。
4).NET CLR 網絡。提供與通過網絡發送和接收數據有關的性能計數器,包括每秒發送和接收的字節數以及活動連接的個數。
5).NET CLR 異常。提供有關應用程序所引發和捕獲的異常個數的報告。
您的應用程序還可以提供您可以通過使用性能日志和警報輕松監控的、應用程序特定的性能計數器。您可以像以下示例所顯示的那樣,定義自定義性能計數器:
[C#]
PerformanceCounter counter = new PerformanceCounter( "Category","CounterName", false );
[Visual Basic .NET]
Dim counter As New PerformanceCounter("Category", "CounterName", False)
在創建性能計數器對象之后,您可以為您的自定義性能計數器指定類別,并將所有相關計數器保存在一起。PerformanceCounter 類在 System.Diagnostics 命名空間中定義,該命名空間中還定義了其他一些可用于讀取和定義性能計數器和類別的類。
性能工具
您可以使用許多工具來幫助您收集和分析應用程序的性能數據。本節中介紹的每種工具都具有不同的功能,您可以使用這些功能來度量、分析和查找應用程序中的性能瓶頸。
注除了這里介紹的工具以外,您還可以使用其他一些選項和第三方工具。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |