我写代码的时间不长,所以我不熟悉哪种技术是最快的,所以我想知道是否有一种方法可以在VS或第三方工具中做到这一点?
谢谢
发布于 2009-02-26 13:25:48
好了,投票时间到了..。
剖析器非常适合测量。
但您的问题是“我如何确定代码的慢速部分在哪里?”
这是一个不同的问题。这是诊断,而不是测量。
我知道这不是一个流行的观点,但这是真的。
这就像是一家试图削减成本的企业。
一种方法(自上而下)是衡量整体财务状况,然后按类别和部门进行细分,并尝试猜测哪些可以消除。这就是测量。
另一种方法(自下而上)是随机走进办公室,随机挑选一个人,然后详细询问他们当时在做什么,以及(重要的)为什么。
不止一次这样做。
这就是哈里·杜鲁门在美国国防工业爆发WW2时所做的事情,并通过访问几个网站立即揭露了大规模的欺诈和浪费。这就是诊断。
在代码中,你可以用一种非常简单的方式做到这一点:“暂停”它,并询问它为什么要花费这个特定的周期。通常,调用堆栈会详细地告诉您原因。
不止一次这样做。
这是采样。一些分析器对调用堆栈进行采样。但是出于某些原因,他们坚持汇总每个函数所花费的时间,包括和排他。这就像业务中的部门总结,包罗万象和排他性。
它会丢失您需要的信息,这些信息是告诉您周期是否必要的细粒度细节。
回答您问题的:
只需暂停您的程序几次,并捕获每次调用堆栈。如果您的代码非常慢,那么几乎每个堆栈上都会出现浪费的函数调用。它们会精确地指向“代码的慢速部分”。
补充: RedGate ANTS正在实现这一目标。它可以为您提供按行计算的成本,而且非常精致。因此,如果你在.NET中,可以多花3位数,并且不介意等着安装和学习它,它可以告诉你很多你的暂停键可以告诉你的东西,并且更漂亮。
发布于 2009-02-16 16:07:28
我已经使用过ANTS Profiler,我可以和其他人一起推荐。
当您将其与它将为您节省的开发小时数进行比较时,价格可以忽略不计。
如果你是一个以开发为生的人,你的公司不会为你买下它,要么换个公司,要么自己买。
https://stackoverflow.com/questions/485976
复制相似问题