在哪里可以找到要在 Visual Studio 2008 中使用的 C# 应用程序的分析器? [关闭]

Posted

技术标签:

【中文标题】在哪里可以找到要在 Visual Studio 2008 中使用的 C# 应用程序的分析器? [关闭]【英文标题】:Where can I find a profiler for C# applications to be used in Visual Studio 2008? [closed] 【发布时间】:2009-05-26 18:02:40 【问题描述】:

我正在为我在 Visual Studio 2008 中开发的 C# 应用程序寻找探查器。我正在寻找价格低廉(首选开源)并且可以集成到 VS2008 中的东西。我找到了Visual Studio Profiler,但我不知道如何使用它。我安装了依赖于 Visual Studio 的 Stand Alone 版本(我猜不是独立的?),但工具菜单中没有出现任何内容,就像他们所说的那样。

【问题讨论】:

【参考方案1】:

这里是开源 .Net profilers 的列表。

我已经使用并喜欢 Red Gate 的 Ants-Profiler,但它确实要花钱(非常值得,恕我直言)。

【讨论】:

【参考方案2】:

Visual Studio Profiler 仅是 Team System 的一部分。它不包含在 Visual Studio Professional 中。

有一个名为 nprof 的免费 .NET 分析器,但它尚未发布,而且它可能相当不稳定。此外,还有一些优秀的商业分析工具,例如ANTS Profiler from Red Gate;但是,这些成本并不低。

【讨论】:

我从未使用过 ANTS Profiler,但除非预算有限,否则 Red Gate 制作的任何东西都不会出错。 如果我没记错的话,Red Gate 有一个 14 天的试用版。我肯定会建议你使用它。我已将其告知其他人,他们最终购买了许可证。【参考方案3】:

查看EQATEC profiler,免费且运行良好。也适用于 ASP.NET 和 .NET CF。

【讨论】:

哇,这看起来不错。我会尝试一下,看看它是否可以与ANTS竞争。来自我的 +1。【参考方案4】:

我的建议是 dotTrace。不是免费的,个人许可证的价格是 170 欧元。

http://www.jetbrains.com/profiler/index.html

【讨论】:

我们公司使用dotTrace。它非常易于使用且非常有用。我推荐它:) 我也使用它的试用版,直到它持续 :) 我喜欢它的简单性以及它管理多语言项目的方式。 ***.com/questions/906915/c-code-performance/… 我使用了这个,它非常适合性能分析,只要你的解决方案不是太大。我尝试在分析模式下运行 5000 个单元测试,但我的内存不够(我的开发电脑中有 8 个 Gig)。所以 dottracer 是资源密集型的。【参考方案5】:

我使用AQtime 非常成功。

如前所述,ANTS 也是一个不错的选择。

【讨论】:

【参考方案6】:

如果您只想进行内存分析,.NET Memory Profiler 非常好。它有一个试用期和之后的小成本 - 非常值得。如果你想花点钱,DevPartner Studio 很不错。

【讨论】:

我现在实际上只是在寻找每个方法的执行时间,但内存分析可能会在以后进行 我可以担保 .NET Memory Profiler。谁说你不能在 .NET 中出现内存泄漏! 它们不是传统意义上的内存泄漏,但是是的,你可以拥有它们。 GC 并不完美,即使在 java 中也是如此。 @Malfist:是的。我发现它非常有用的地方是识别随时间的积累(例如,未清除的集合)。因此,更多的是寻找代码错误地阻止 GC 的地方,而不是 GC 本身的问题。 :)【参考方案7】:

this *** thread 中有一些关于 .NET 分析器的讨论。我曾经使用过CLR Profiler 一些,它帮助我解决了之前软件中的一些性能问题。可能值得一试。微软已发布a guide on how to use the CLR Profiler。

【讨论】:

【参考方案8】:

对于性能调整,而不是内存诊断,有一个simple way to do it。

这是违反直觉的,但您所要做的就是在 IDE 下运行程序,当它运行缓慢时,暂停它几次,检查调用堆栈以了解它为什么在做它正在做的事情。很有可能多个样本会显示它正在做一些你可以消除的事情。节省的时间大致等于包含您修复的代码的样本部分。

它“又快又脏”,但与大多数分析器不同,它精确定位需要注意的实际语句,而不仅仅是包含它们的函数。它还直接粗略估计了通过修复它们可以预期的加速。它不会被递归所迷惑,并且避免了调用树的困难,即问题在任何分支中可能很小,但通过分布在许多分支上可能很大。

我取了几个样本 N,通常不超过 20。如果在堆栈中间的某个地方有一个热点或恶意方法调用,占用了执行时间的一小部分 F,那么将显示它的样本数是 NF +- sqrt(NF(1-F)。例如,如果 N=20 和 F=0.15,将显示它的样本数是 3 +- 1.6,所以我很有可能找到它。

通常F更像是0.5,所以显示它的样本数是10 +- 2.2,所以不会漏掉。

请注意,这与代码的运行速度或运行频率完全无关。如果优化它会为您节省一定百分比的时间,这决定了为您显示它的样本百分比。

通常有多个地方需要优化。如果问题 1 的 F1=0.5,问题 2 的 F2 = 0.1,那么如果你修复了问题 1(程序速度加倍),那么 F2 通常会增加那个因子,达到 0.2。所以你可以再做一次,并确保找到问题 2。 通过这种方式,您可以解决一系列问题,直到代码实际上达到最佳状态。

【讨论】:

哈哈,玩得开心,几十年后见!如果您有数百万次调用会怎样? @leppie:对不起?如果您的意思是每秒数百万次调用,那没关系。重要的是时间的百分比。顺便说一句,这可以在安装和学习工具的一小部分时间内完成。 投反对票是因为不认为它会起作用,还是只是不“喜欢”它? 这种方法非常适合发现代码中的大量低效问题。并且它节省了对分析器的加速(尽管这是一次性成本)。这种方法的问题是你有 10 个独立的问题,每个问题都贡献了 1% 的不必要的运行时间。总节省是 10% 的速度增加,这将是相当不错的,但要找到任何一个减速都将非常耗时。即使以 1% = 1 +/- 0.995 次采样 100 个样本,您也会使用此方法找到其中一个调用。一个可以让你对函数调用进行排序的分析器会让你很快找到正确的函数。 @Robert:我的经验是问题有某种对数正态分布,从大到小。无论您解决哪个问题,都会使其余问题变得更大,以百分比为基础,因此某些事情一开始可能很小,但随着您解决其他问题,它会变得更大。无论如何,如果代码中真的只有 10% 的加速空间,那它几乎是最优的。我已经看到了 10-40 次这样的因素。

以上是关于在哪里可以找到要在 Visual Studio 2008 中使用的 C# 应用程序的分析器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以找到安装在 Visual Studio 中的 TypeScript 版本?

在哪里可以找到 Visual Studio 的 C99 数学实现?

在哪里可以找到 SaveFileDialog 的选定文件路径(C#,Visual Studio)

在 Visual Code Studio 中哪里可以找到 Flutter 布局检查器?

在哪里可以找到“winmm.lib”(我使用的是 Visual Studio 2012)

我在哪里可以找到Visual Studio 2017 Enterprise试用版的Xamarin测试记录器?