首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#如何确定代码的慢速部分在哪里?

C#如何确定代码的慢速部分在哪里?
EN

Stack Overflow用户
提问于 2009-01-28 00:32:52
回答 11查看 19.5K关注 0票数 19

我写代码的时间不长,所以我不熟悉哪种技术是最快的,所以我想知道是否有一种方法可以在VS或第三方工具中做到这一点?

谢谢

EN

回答 11

Stack Overflow用户

发布于 2009-02-26 13:25:48

好了,投票时间到了..。

剖析器非常适合测量。

但您的问题是“我如何确定代码的慢速部分在哪里?”

这是一个不同的问题。这是诊断,而不是测量。

我知道这不是一个流行的观点,但这是真的。

这就像是一家试图削减成本的企业。

一种方法(自上而下)是衡量整体财务状况,然后按类别和部门进行细分,并尝试猜测哪些可以消除。这就是测量。

另一种方法(自下而上)是随机走进办公室,随机挑选一个人,然后详细询问他们当时在做什么,以及(重要的)为什么。

不止一次这样做。

这就是哈里·杜鲁门在美国国防工业爆发WW2时所做的事情,并通过访问几个网站立即揭露了大规模的欺诈和浪费。这就是诊断。

在代码中,你可以用一种非常简单的方式做到这一点:“暂停”它,并询问它为什么要花费这个特定的周期。通常,调用堆栈会详细地告诉您原因。

不止一次这样做。

这是采样。一些分析器对调用堆栈进行采样。但是出于某些原因,他们坚持汇总每个函数所花费的时间,包括和排他。这就像业务中的部门总结,包罗万象和排他性。

它会丢失您需要的信息,这些信息是告诉您周期是否必要的细粒度细节。

回答您问题的

只需暂停您的程序几次,并捕获每次调用堆栈。如果您的代码非常慢,那么几乎每个堆栈上都会出现浪费的函数调用。它们会精确地指向“代码的慢速部分”。

补充: RedGate ANTS正在实现这一目标。它可以为您提供按行计算的成本,而且非常精致。因此,如果你在.NET中,可以多花3位数,并且不介意等着安装和学习它,它可以告诉你很多你的暂停键可以告诉你的东西,并且更漂亮。

票数 24
EN

Stack Overflow用户

发布于 2009-01-28 00:34:24

分析。

RedGate有一个产品。

JetBrains有一个产品。

票数 8
EN

Stack Overflow用户

发布于 2009-02-16 16:07:28

我已经使用过ANTS Profiler,我可以和其他人一起推荐。

当您将其与它将为您节省的开发小时数进行比较时,价格可以忽略不计。

如果你是一个以开发为生的人,你的公司不会为你买下它,要么换个公司,要么自己买。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/485976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档