如何找到一段代码的执行时间?

3

C# 代码

  1. Visual Studio 中是否可能找到一组代码的执行时间

  2. 如果 Visual Studio 没有提供任何此类工具,那么有哪些替代方法?

  3. 有没有免费可靠的工具可以下载使用?

SQL Server Management Studio

  1. SQL Server Management Studio 中是否可能找到一组代码的执行时间

  2. 如果 SQL Server Management Studio 没有提供任何此类工具,那么有哪些替代方法?

  3. 有没有免费可靠的工具可以下载使用?

谢谢


1
SET STATISTICS TIME ON; - 好了,SSMS已经解决了...;对于.NET代码-存在许多分析器和仪表化框架(我喜欢mini-profiler,但我有偏见;请注意,您也可以使用mini-profiler来计时SQL代码并将所有数据一起呈现) - Marc Gravell
通常我会在代码中所需的前/后位置从DateTime.Now创建时间对象,然后将它们相减,并将结果TimeSpan输出为秒或毫秒或其他单位。 - Rob
1
作为 mini-profiler 可以做什么的示例,这里是几分钟前在这个网站上拍摄的快照 - 请注意有更多的步骤被记录,但它们默认不显示(请参见“show trivial”):http://i.stack.imgur.com/PzQkM.png - 还提供了对执行的所有 SQL 命令及其参数的完全访问权限。我们可以在 stackoverflow.com 上的生产环境中 24x7 运行它,它的影响很小。 - Marc Gravell
4个回答

2

对于SSMS,如果您需要在SQL Server Management Studio中以毫秒为单位获取查询执行时间,则有一种简单的方法可以实现此目的。

这里提供了详细步骤。

set statistics time on

-- your query 

set statistics time off

这将在“消息”窗口中显示以下行:
SQL Server Execution Times: CPU time = 16 ms, elapsed time = 16 ms.

1

对于C#:

看看Visual Studio中的性能分析管理器。它可以奇迹般地解决许多寻找性能问题的编程难题。它在VS2010的测试菜单下。

它可以使用多种不同的技术,您可以选择最适合您性能调试需求的技术。

对于SQL:

我通常只使用性能计时器或DateTime,以类似于秒表的方式使用。


1
如果您只想在 .NET 中进行一些快速而简单的计时检查,您可以创建一个秒表,然后在相关代码周围启动和停止它。 快速、免费且不太美观。

0

对于C#,如果您不想使用分析器,只想知道某段代码执行需要多长时间,可以使用计时器。

var sw = StopWatch.StartNew();
//some code...
sw.Stop();
Console.Writeline(sw.Elapsed);

如果你希望在保持非常脏的同时变得更加干净,你可以创建一个类,让它实现IDisposable接口,并在using语句中使用它。 - aevitas
为什么呢?只是为了使用“Using”吗?这并不是一个好的解决方案,它会破坏编码规范。如果你真的想这样做,最好使用PostSharp AOP,然后使用正确的属性装饰任何需要进行分析的方法。但不要开始在不需要被处理的对象上创建IDisposable... - woutervs
@woutervs 我认为aevitas的意思是,当你实现IDisposable并在using (...)样式中使用类时,你可以抽象出Start/Stop调用。这将导致代码更加清晰,因为你只需要在自己的代码中保留using语句,而不需要任何特定的代码来操作你的秒表。 - Maarten
我知道他在说什么,虽然在你看来这样做可能更加简洁,但在大多数人的看法中,这并不被认为是更加简洁的。另一个程序员可能会认为你正在使用未管理的资源等等。如果你想让它更加简洁,那么最好使用lambda函数,例如Time(()=>YourFunction)。或者更好的方法是使用AOP。 - woutervs
因此,我建议使用Lambda作为替代方案。如果您需要对20种不同的方法进行分析,请使用实际的分析器而不是在代码中编写它。PostSharp是一个例子,也是最知名的AOP解决方案之一。我仍然认为这比将方法标记为可处理的要好,而实际上没有必要处理任何内容。 - woutervs
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接