是否有C#属性(用于方法)来计算此方法的执行时间?有另一种方法吗?是否可以使用属性计算C#中方法的执行时间?
回答
如果您想编写一些测试代码来分析各种功能或其中的某些部分,您可以使用System.Diagnostics.Stopwatch来跟踪经过的时间。就像这样:
public void DoSomething(){
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//stuff you want to time
stopWatch.Stop();
System.Console.Writeln(String.Format("Total Ticks: {0}", stopWatch.ElapsedTicks))
}
如果这是你想要做一个更普遍的事情(即制定出什么计划的部分是缓慢的),然后使用一个分析器像一些其他的答案提出的。
您可以使用Timer
,在函数调用之前启动它,然后在方法完成后停止它。然后以优选形式输出时间!
OR
如果你不想写手工代码,请Visual Studio Profilers或SO - Best Profilers。
是的,最好的形式是修复你没有使用合适的分析器的事实:_)** [见FAQ条目号。 5](http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers)** – sehe 2011-05-13 13:35:21
还有其他方法: 您可以使用VS Profiler来检查particuler方法执行的次数和时间。
,或者你可以它使用属性剖析性能第三方库,请参阅本相关主题What Are Some Good .NET Profilers?
您可以使用面向方面编程来做到这一点。看看来自PostSharp的这个例子:http://www.sharpcrafters.com/solutions/performance
这里的技巧是定义在编译时注入代码的行为。一个用例是为您需要的方法添加时间。
简单的馅饼:
- 切勿
- Use a profiler
- 对于生产测量使用Performance Counters
事情是这样的:
var oldTime = DateTime.Now;
//your code here
var resultTimeSpan = DateTime.Now - oldTime;
- 1. 是否可以计算没有变量的方法执行时间?
- 2. 计算的方法的执行时间
- 3. 属性是否总是在C#中的方法之前执行?
- 4. 是否可以使用计算的属性来计算Vue中的另一个属性?
- 5. 使用LOGPARSER的计算方法执行时间
- 6. 如何知道在C++中计算算法的执行时间?
- 7. 使用属性阻止在设计时执行方法
- 8. 是否可以审计在页面上执行的JavaScript方法?
- 9. 是否可以用Objective-C中的方法进行算术运算?
- 10. 计算的执行时间
- 11. 是否可以使用DOS回声在单行中执行数学计算?
- 12. 使用C#中的PowerShell计算属性
- 13. 是否可以在运行时修改属性的属性?
- 14. 阻止方法执行的C#属性
- 15. 是否可以在PHP关联数组中执行计算?
- 16. C++算法的执行时间
- 17. 是否可以使用ExpandoObject创建运行时属性?
- 18. 计算执行时间
- 19. 计算CPU执行时间
- 20. 执行时间计算
- 21. vue.js是否更新依赖于方法的计算属性?
- 22. 是否可以计算文件执行的次数?
- 23. 是否有可能返回App Engine计算属性中的引用属性?
- 24. 使用C++计算执行时间,而不是使用<time.h>
- 25. 以算术方式计算属性
- 26. 是否可以使用宏来计算C样式的`enum`值?
- 27. 是否可以在Windows窗体中使用Page.IsPostBack属性? c#
- 28. 不同的方法计算时间执行
- 29. 螺栓执行()方法内的风暴计算时间
- 30. 理论上如何计算某种方法的执行时间?
这个问题是没有意义的。属性只在某些东西正在查找时才起作用,这意味着您需要一些代码来检查属性,然后执行某些操作。另外'这个'是什么? – Tejs 2011-05-13 13:25:02
仅当您使用基于属性的代码重写器(如postsharp)时。 – CodesInChaos 2011-05-13 13:28:38
@Tejs这可能没有意义,因为OP可能会误解属性是什么以及如何使用它们。在这种情况下,你纠正他,帮助他,而不是给他一个downvote。而“这一个”显然是指该方法。 – Phil 2011-05-13 13:32:23