C#開發(fā)過程中我們在分析軟件中可以使用一些軟件分析代碼中存在的問題,本文我們分享兩個軟件
- DotMemory
- DotTrace
1. DotMemory和DotTrace
dotTrace 是一個包含了可用于.NET應(yīng)用程序的性能分析器(dotTrace Performance) 和內(nèi)存分析器(dotTrace Memory)的套件。
dotTrace Performance可幫助用戶對各種.NET框架內(nèi)的應(yīng)用程序的性能瓶頸進行檢測,能夠幫助.Net開發(fā)者以最快的方式找到并移除性能上的瓶頸。
dotTrace Memory 則能幫助用戶發(fā)現(xiàn)內(nèi)存泄露并能對基于.NET 4.0以上框架的應(yīng)用程序進行內(nèi)存占用優(yōu)化。
1.1. 安裝軟件
選擇Crack
最后我們打開VS即可。
1.2. 軟件介紹
借對 C#、VB.NET、XAML、JavaScript、TypeScript、JSON、XML、HTML、CSS、ASP.NET、ASP.NET MVC、Protobuf、NAnt 和 MSBuild 腳本的無與倫比的支持,包括全面的跨語言功能,JetBrains ReSharper 將為您提供幫助任何 Visual Studio 用戶都可以編寫更好的代碼,輕松檢查和重構(gòu)現(xiàn)有代碼庫。
您可以花更少的時間在例行的、重復(fù)性的手工工作上,而是專注于手頭的任務(wù)。一組強大的自動錯誤檢查和代碼糾正功能可縮短開發(fā)時間并提高您的效率。您會發(fā)現(xiàn) ReSharper 在提高開發(fā)人員生產(chǎn)力和提高代碼質(zhì)量方面迅速收回了成本。借助 ReSharper,.NET 開發(fā)人員可以真正體驗到我們所說的“開發(fā)的驅(qū)動力”的意思。
1.2.1. DotTrace
在線官方文檔:
https://www.jetbrains.com/help/profiler/Introduction.html
dotTrace 可以說是 .NET 性能分析最方便的工具。
dotTrace 可讓您發(fā)現(xiàn)各種 .NET 應(yīng)用程序中的性能瓶頸,包括基于 .NET Framework、.NET Core、Mono 和 Unity 版本的 Mono 的應(yīng)用程序。
1.2.1.1. 基本概念
dotTrace 提供了兩種分析應(yīng)用程序的方法:
- 性能分析
在性能分析期間,dotTrace 收集調(diào)用堆棧數(shù)據(jù)和有關(guān)調(diào)用計時的數(shù)據(jù)。換句話說,性能分析可以讓您查看執(zhí)行特定方法所需的時間、調(diào)用頻率以及跟蹤方法調(diào)用路徑。
-
何時使用性能分析(性能分析在以下情況下很有用:)
-
評估整體應(yīng)用性能。
-
查找應(yīng)用程序瓶頸 - 代碼中最慢的部分。
-
調(diào)查特定方法中的性能問題。
-
為了收集性能數(shù)據(jù),dotTrace 中斷應(yīng)用程序執(zhí)行并檢索調(diào)用堆棧數(shù)據(jù)。很明顯,這種分析的結(jié)果將根據(jù)分析器收集數(shù)據(jù)的頻率而有所不同。如果很少這樣做,您可能會錯過一些短調(diào)用(在數(shù)據(jù)收集之間進行)。同時,由于探查器開銷低,探查器計算的調(diào)用時間值將非常準(zhǔn)確。相反,如果過于頻繁地收集調(diào)用堆棧數(shù)據(jù)(例如,在每次調(diào)用進入和退出時),您將獲得不準(zhǔn)確的時間值(分析器開銷很大),但有關(guān)已執(zhí)行調(diào)用的數(shù)量卻非常準(zhǔn)確。為了以某種方式解決這一矛盾并讓您在準(zhǔn)確的時間和電話號碼測量之間取得平衡,dotTrace 提供了三種不同的性能分析類型。了解有關(guān)類型的更多信息分析類型。
- 時間線分析
在時間線分析期間,dotTrace 記錄應(yīng)用程序事件并寫入有關(guān)分析會話期間應(yīng)用程序狀態(tài)如何變化的數(shù)據(jù)。這些不僅包括臨時調(diào)用堆棧和線程狀態(tài)數(shù)據(jù),還包括有關(guān)內(nèi)存分配、垃圾收集和 I/O 操作的臨時數(shù)據(jù)。
會話完成后,可以在時間線查看器中分析分析結(jié)果,時間線查看器在時間線圖上顯示記錄的事件。
時間線分析基于 Windows 事件跟蹤 (ETW)。
-
何時使用時間線分析
-
發(fā)現(xiàn)應(yīng)用程序瓶頸。
-
確定用戶界面凍結(jié)的原因。
-
識別過多的垃圾收集和 I/O 操作。
-
確定多線程應(yīng)用程序中的問題,例如不規(guī)則的工作分配、鎖爭用、序列化執(zhí)行等。
-
-
時間線和性能分析之間的差異
-
在大多數(shù)情況下,這兩種分析方法是可以互換的。兩者都收集調(diào)用堆棧數(shù)據(jù)并允許確定性能瓶頸。
-
時間線分析的主要好處是,它不僅可以讓您查看應(yīng)用程序進行了哪些調(diào)用,還可以查看這些調(diào)用是如何及時分布的。這在分析事件的時間順序確實很重要的多線程應(yīng)用程序的行為時非常有用:例如,在確定同步延遲、UI 凍結(jié)的原因等方面。
-
另一個好處是時間線分析收集了更廣泛的數(shù)據(jù)。除了調(diào)用堆棧數(shù)據(jù)外,它還記錄內(nèi)存分配、垃圾回收和 I/O 事件。
-
那么,有什么缺點呢?首先,與跟蹤性能分析類型不同,時間線分析無法確定執(zhí)行調(diào)用的確切數(shù)量。因此,它幾乎不能用于分析算法的復(fù)雜性。
-
另一個問題是時間線分析意味著完全不同的數(shù)據(jù)表示 - 它使用時間線查看器,這是一組過濾器和圖表,用于處理事件時間線。因此,性能分析及其性能查看器界面更適合更直接的“什么是最慢的方法?” 情景。
-
- 分析器運行模式
序號 | 類型名稱 | 功能描述 |
---|---|---|
1 | Sampling | 通過獲取CLR內(nèi)部一個方法和結(jié)束執(zhí)行的時間差來計算的分析時間。這是最快的方法,它用于精確測量程序運行時間,但可能會丟失一些數(shù)據(jù)。使用此配置類型可使你快速獲取應(yīng)用程序的總體性能 |
2 | Tracing | 慢于Sampling的方法,但是可以準(zhǔn)確地測量特定方法被調(diào)用的準(zhǔn)確次數(shù)。他是通過獲取CLR內(nèi)部一個方法開始執(zhí)行和結(jié)束執(zhí)行的時間差來計算的分析時間。 |
3 | Line-by-line | 通過手機代碼執(zhí)行的每條語句的時間來就行比較,她計算出的時間更加精確。該方法適用于你已經(jīng)知道性能問題大概在哪里出現(xiàn),并要找到具體某一個出現(xiàn)性能問題的時候。 |
4 | Timeline | 采取抽樣的方式,每個一段時間(10ms),會暫停所有線程,并抓取堆棧里的信息,然后才計算出代碼執(zhí)行時間差。使用這個方式可能會導(dǎo)致一些執(zhí)行時間少于10ms的方法無法被抓取到。 |
1.2.1.2. 開始使用性能分析
可以大力參考官方文檔:https://www.jetbrains.com/help/profiler/Other_Profiling_Scenarios.html
1.2.2. DotMemory
dotMemory 是一種內(nèi)存分析工具,可讓您分析任何基于 .NET 的應(yīng)用程序的內(nèi)存使用情況。這包括獨立應(yīng)用程序(例如,用 C# 或 VB.NET 編寫的)、ASP.NET Web 應(yīng)用程序、任意 .NET 進程等。
https://www.jetbrains.com/help/dotmemory/Introduction.html
1.2.2.1. 基本概念
dotMemory 收集正在運行的 .NET 進程的內(nèi)存使用數(shù)據(jù)。然后,數(shù)據(jù)以多個視圖呈現(xiàn)給您,這些視圖為內(nèi)存中的對象提供了不同的視角。
dotMemory 允許您回答許多與應(yīng)用程序的內(nèi)存使用相關(guān)的問題:
-
為什么這個對象還在內(nèi)存中(是什么導(dǎo)致了內(nèi)存泄漏)?
-
什么需要這么多內(nèi)存?
-
垃圾收集如何影響應(yīng)用程序性能(例如,高內(nèi)存流量)?
-
是否違反了任何內(nèi)存分配/分布模式?
然而,緊急情況(當(dāng)您已經(jīng)有內(nèi)存問題時)并不是內(nèi)存分析的唯一原因。dotMemory 也是日?;臼褂玫慕^佳工具。例如,在對代碼應(yīng)用更改或引入新算法后運行 dotMemory。dotMemory 將立即向您展示事情的進展情況——是變好還是變壞。將 dotMemory 的使用作為您的必備例程之一將幫助您即時改進您的代碼。文章來源:http://www.zghlxwxcb.cn/news/detail-442368.html
1.2.2.2. 開始使用內(nèi)存分析
文章來源地址http://www.zghlxwxcb.cn/news/detail-442368.html
到了這里,關(guān)于宇宙第一IDE是誰?是微軟+JetBrains :DotTrace和DotMemory的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!