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