.net 测量函数、类和进程速度的最佳方法

.net 测量函数、类和进程速度的最佳方法,.net,sql,testing,performance,measure,.net,Sql,Testing,Performance,Measure,测量函数和类的速度的最佳方法是什么?对于每个函数,都有各种各样的解决方案,我想知道如何测量运行速度并用最好的解决方案优化我的共享类 另外,您如何衡量SQL速度,例如存储过程、选择、视图等之间的差异?您有两个选择 用于特定方法。 这是.NET中的高分辨率计时器,可用于代码的特定部分 如果需要测量整个应用程序的性能,请使用探查器。 您可以使用Visual Studio Ultra edition的内置探查器或类似工具。最好使用探查器。测量挂钟执行时间(例如由Stopwatch类完成)的问题在于,它受

测量函数和类的速度的最佳方法是什么?对于每个函数,都有各种各样的解决方案,我想知道如何测量运行速度并用最好的解决方案优化我的共享类

另外,您如何衡量SQL速度,例如存储过程、选择、视图等之间的差异?

您有两个选择

用于特定方法。

这是.NET中的高分辨率计时器,可用于代码的特定部分

如果需要测量整个应用程序的性能,请使用探查器。


您可以使用Visual Studio Ultra edition的内置探查器或类似工具。

最好使用探查器。测量挂钟执行时间(例如由
Stopwatch
类完成)的问题在于,它受到许多您无法控制的因素的影响。仅提及其中几个因素,还有网络和其他I/O延迟,以及影响应用程序和线程相对优先级的操作系统调度程序决策。如果您在虚拟化环境中运行,这也会对毫秒范围的挂钟时间测量产生较大影响。分析器并不完美,但它可以让您更好地了解执行代码实际花费的时间


除此之外,一个好的探查器还可以提供其他有用的指标,比如代码在执行过程中使用了多少内存。

最好不要混淆度量和优化的目标。它们是不同的任务。测量虽然有助于量化修复的结果,但却不能告诉你修复什么

关于测量的问题,如果我想展示某物的速度,我需要一个受控的环境和一个好的秒表。然而,为了优化,粗略的测量(比如运行1000次)和使用简单的计时器就足够了

关于优化问题,我不关心速度。 我担心不必要的活动。 不需要高速运行代码就可以找到它

当任何程序运行时,它都会跟踪调用树。 优化包括删除尽可能多的叶子(说明)和水果(I/O)。 一个很好的方法是修剪整根树枝

  • 在除了最小的程序之外的所有程序中,典型的优化机会都是由调用点(调用函数的代码行,而不是函数本身)组成的,当人们意识到调用树中有多少是从它们中产生的时,实际上可以用另一种方式来完成。一行看似无辜的代码可能占整个树的很大一部分,您可以简单地将其砍掉
为了找到这些,我认为挂钟时间堆栈采样是最好的方法。这不一定是一个有效的过程,而且相当少的样本与大量样本的效果一样好(或更好)。 有必要重复这样做,因为任何给定的程序,如第一次编写的,都不包含一个加速的机会。它包含几个。