Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对yourkit.NET分析器的看法?_.net_Profiler - Fatal编程技术网

对yourkit.NET分析器的看法?

对yourkit.NET分析器的看法?,.net,profiler,.net,Profiler,有人在使用由您的工具包制作的.NET探查器吗?我正在寻找一个好的.NET分析器,偶然发现了yourkit。因为我要买一张单人驾照,对我来说要79欧元,这对我来说还行。我也喜欢:或多或少易于使用和友好的GUI 但是我在分析.NET应用程序方面不是很有经验,所以我想知道yourkit.NET profiler是否完成了这项工作。不过,Yourkit似乎在Java世界中相当有名 有什么意见吗?意见?是 啊当您决定购买或不购买哪个分析器时 添加:@Max:Step-by-Step说明:IDE有一个“暂停

有人在使用由您的工具包制作的.NET探查器吗?我正在寻找一个好的.NET分析器,偶然发现了yourkit。因为我要买一张单人驾照,对我来说要79欧元,这对我来说还行。我也喜欢:或多或少易于使用和友好的GUI

但是我在分析.NET应用程序方面不是很有经验,所以我想知道yourkit.NET profiler是否完成了这项工作。不过,Yourkit似乎在Java世界中相当有名


有什么意见吗?

意见?是 啊当您决定购买或不购买哪个分析器时

添加:@Max:Step-by-Step说明:IDE有一个“暂停”按钮。在IDE下运行你的应用程序,当它主观上变慢时,即当你在等待它时,点击“暂停”按钮。然后获取调用堆栈的快照

要快照调用堆栈,我要做的是显示它(这是调试窗口之一)。在IDE选项中,您可以找到在堆栈视图中显示内容的选项。我关闭了显示函数参数的选项,因为这会导致行太长。我对调用发生的行号和被调用函数的名称感兴趣。然后,在调用堆栈视图中,您可以执行“全选”和“复制”,然后将其粘贴到记事本中。我知道这有点笨拙,但我过去常常用手把它们写下来

我用这种方法取了一些样品。然后我查看它们,查找出现在多个样本上的行,因为这些行需要花费时间。有些只是必要的,比如“呼叫主”,但有些不是。那些是金块。如果找不到,我会继续采集样本,最多20个。如果到那时我仍然没有发现任何(非常不寻常的)问题,那么程序已经非常优化了。(一个关键点是,每次这样做,程序都会变得更快,在这个过程中,剩余的性能问题会变得相对更大,更容易发现。也就是说,程序不仅会以一定的比率R变得更快,而且剩余的问题也会以相同的比率以百分比的方式变得更大。)*

在这个过程中,我要做的另一件事是问自己程序在做什么,为什么在这个示例中。“为什么”是非常重要的,因为这是你如何判断一条线是否确实是必要的,或者是否可以用成本较低的东西来代替。如果我不确定它为什么会在那里,我会一步一步地看一看数据,或者让它返回几个级别(shift-F11),直到我了解它在做什么。这就是全部

如果现有的探查器实际执行堆栈采样、保留样本、按样本所占百分比对行进行排序,然后让您详细研究单个样本,则可以帮助完成此过程。也许他们会在某个时候,但现在不会了。他们在效率和衡量等问题上犹豫不决


*假设您的代码将90%的时间花在X上,9%的时间花在Y上,这两者都不是必需的。取少量样本,你会看到X,但可能不是Y。如果你修正X,你会得到10倍的加速。再次进行采样(您可能需要在程序周围环绕一个外循环,以便进行采样)。现在你可以确定地看到Y,因为现在它需要9%x10x=90%。修复它会使您的总体加速率再提高10倍。

免责声明:我的建议基于这样一个假设,即您认真对待性能评测,并希望了解调整工作的准确改进百分比

根据我使用ANTS和DotTrace等性能分析器的经验,我认为它们在某一点或另一点都失败时是有用的

通用性能分析器的问题是它们增加了太多的开销,导致结果不准确。但是,他们在寻找重型作业方面做得很好。当您使用探查器发现一个操作占用了总处理时间的40%时,它实际占用了40%吗?也许不是。但它可能需要很多时间来运行

所以要回答你的问题,你的装备是“优秀”还是“令人满意”并不重要,除非它糟糕到让你听到可怕的故事。因为它将为您提供应用程序中性能瓶颈的大图。让您知道在何处插入自己的时间记录说明,以了解应用程序的实际性能配置文件


另外,我还建议你阅读一下,这会让你对这个概念有一个全面的了解,并有助于理解其他人的建议

如果成本是一个问题,Eqatec将免费提供.Net探查器()。但从未尝试过,因此无法评论它有多好。我做了一次短暂的尝试,但yourkit分析器似乎更容易使用。我不介意为软件付费,但是红门最好的剖析器(如Stackoverflow上所述)对我来说太贵了。所以少于100欧元就可以了。到目前为止,最好的.net分析器是在Visual Studio团队系统中的F1。我已经广泛使用了redgate,发现它对于分析任何硬性能问题几乎毫无用处。它缺乏关于上下文和线程切换等方面的内核信息,这使得它很难处理复杂的线程应用程序。嗯,太糟糕了,我只有VS专业版可用。关于红门一号的有趣信息。有人开车路过。这是有争议的证据。这里还有另一种解释:您的方式听起来很有趣,但老实说,我不太确定如何使用C#和VisualStudio2008实现这一点(简而言之:我还不了解它)。有关于这方面的“逐步”说明吗?这是一种有趣的优化/测量方法。从未见过或听到过这样的事情。但是听起来很有趣,我会试试看!谢谢你的详细解释@麦克斯,不客气。这种方法的部分思维定势是,精确的测量不一定是找到要优化的东西的先决条件。T