翻譯|使用教程|編輯:莫成敏|2019-12-27 13:57:12.510|閱讀 940 次
概述:本文介紹了6個(gè)關(guān)于.NET性能建議的技巧,現(xiàn)在就來了解一下吧~
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
ANTS Performance Profiler是一種用于分析.NET框架支持的以任何語言編寫的應(yīng)用程序的工具。ANTS性能分析器能分析所有.NET應(yīng)用程序,包括ASP.NET網(wǎng)絡(luò)應(yīng)用程序、Windows服務(wù)和COM+應(yīng)用程序。ANTS性能分析器能在幾分鐘內(nèi)識(shí)別性能瓶頸,運(yùn)行非常快速,且響應(yīng)時(shí),對(duì)程序的執(zhí)行具有最低影響。
ANTS性能分析器可用作一種獨(dú)立工具,也可用作Red Gate .NET Developer Bundle的一部分。本文介紹了6個(gè)關(guān)于.NET性能建議的技巧,現(xiàn)在就來了解一下吧~
點(diǎn)擊下載ANTS Performance Profiler正式版
技巧1:如果必須在代碼中測(cè)量較小的時(shí)間差異,請(qǐng)確保使用StopWatch類
DateTime.UtcNow不是為高精度計(jì)時(shí)而設(shè)計(jì)的,并且通常具有超過10ms的分辨率,使其不適合測(cè)量小時(shí)間段。 StopWatch類是為此目的而設(shè)計(jì)的,盡管要當(dāng)心使用StopWatch工具結(jié)束整個(gè)代碼庫(kù)。
技巧2:充分利用所有瓶頸來提高.NET性能
雖然Async-Await習(xí)慣運(yùn)作良好,但是架構(gòu)模式可以切換到更高的檔位。處理多個(gè)小型作業(yè)時(shí),請(qǐng)考慮將作業(yè)部分拆分為特定于資源的塊。然后為每個(gè)資源創(chuàng)建單獨(dú)的線程,并在兩者之間放置內(nèi)存緩沖區(qū)。目標(biāo)是在任何給定的計(jì)算機(jī)上充分利用任何資源作為.NET性能的瓶頸。
例如,在下圖中,應(yīng)用程序包含四個(gè)步驟。
它首先從磁盤讀取文件,對(duì)其進(jìn)行一些處理,將結(jié)果存儲(chǔ)在數(shù)據(jù)庫(kù)中,最后刪除該文件。每個(gè)紅色框是一個(gè)單獨(dú)的線程,每個(gè)垂直的“泳道”代表一個(gè)特定的資源。該過程從上到下流動(dòng),并使用隊(duì)列作為每個(gè)資源交換機(jī)之間的緩沖區(qū)。
技巧3:使用防御性編碼技術(shù),例如在可行的情況下執(zhí)行空檢查,以避免在運(yùn)行時(shí)出現(xiàn)NullReferenceExceptions
異常可能很慢,應(yīng)只在特殊情況下使用,而不是用于一般控制流程。與其假設(shè)一個(gè)對(duì)象在運(yùn)行時(shí)不會(huì)為空,而是使用防御性編碼以確保您的代碼僅作用于非空的對(duì)象。這將通過引發(fā)更少的異常來幫助.NET性能,并確保更健壯和可靠的應(yīng)用程序。
技巧4:假定.NET性能問題是您的錯(cuò),除非您有相反的證據(jù)
當(dāng)出現(xiàn).NET性能問題時(shí),很容易將責(zé)任歸咎于系統(tǒng)代碼、第三方庫(kù),甚至.NET框架本身。但是,在幾乎所有情況下,您的應(yīng)用程序都在濫用他人的代碼,因此在責(zé)怪其他人之前,請(qǐng)確保您有確鑿的證據(jù)證明問題出在其他地方。
技巧5:預(yù)先準(zhǔn)備.NET性能優(yōu)化項(xiàng)目
好的.NET性能優(yōu)化項(xiàng)目需要在四個(gè)關(guān)鍵領(lǐng)域進(jìn)行適當(dāng)?shù)臏?zhǔn)備。
創(chuàng)建一個(gè)測(cè)試環(huán)境,您可以在其中再現(xiàn)一致的.NET性能行為。理想情況下,如果您多次運(yùn)行該工具,則希望它顯示出相同的.NET性能。沒有這樣的測(cè)試環(huán)境,不要開始優(yōu)化。
在進(jìn)行任何更改以用作基準(zhǔn)之前,請(qǐng)測(cè)量.NET性能KPI。更改代碼后,將性能與基準(zhǔn)進(jìn)行比較。如果更改使代碼更快,那么新的測(cè)試結(jié)果就是您的新基準(zhǔn)。如果不是,請(qǐng)撤消更改并繼續(xù)使用.NET Profiler工具(如ANTS Performance Profiler)進(jìn)行分析。
不要同時(shí)改變太多。進(jìn)行小的更改,進(jìn)行度量,然后決定是否要保留更改。如果進(jìn)行多項(xiàng)更改,那么一項(xiàng)更改可以使您的代碼更快,而另一項(xiàng)更改可能會(huì)破壞積極的效果。
永遠(yuǎn)不要猜,測(cè)量!獲取一個(gè)像ANTS這樣的.NET探查器工具,并使用它來發(fā)現(xiàn).NET性能瓶頸。在許多情況下,性能殺手是您意想不到的。避免僅僅因?yàn)楦杏X性能不好而優(yōu)化代碼。
技巧6:在優(yōu)化代碼之前,先對(duì)應(yīng)用程序進(jìn)行分析,以便了解瓶頸在哪里
這是很多地方都在說的話,但我想再說一遍,因?yàn)樗侨绱酥匾<词故褂肰isual Studio中有限的.NET分析器工具來分析應(yīng)用程序中的性能問題也將有所幫助。借助ANTS Performance Profiler等專業(yè)的.NET Profiler工具,您將發(fā)現(xiàn)有關(guān)瓶頸的更多信息,并且能夠更快地執(zhí)行更多操作。
本教程內(nèi)容到這里就結(jié)束了,希望對(duì)您有所幫助~您可以下載ANTS Performance Profiler試用版免費(fèi)評(píng)估~
想要購(gòu)買產(chǎn)品正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: