首页 / C# / c#-测量许多方法的执行时间
c#-测量许多方法的执行时间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-测量许多方法的执行时间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2373字,纯文字阅读大概需要4分钟。
内容图文
我在WPF中的项目中工作,该项目在SQL Server中使用实体框架.最佳化有废话.一切都太慢了.而且我想诊断代码的哪些部分会降低性能-我认为只有少数(我是说很多,但不是全部)设计不良的地方会降低性能.
现在,对于每个表,我们都有一个类,例如UserRepository.它不完全是存储库模式.这些类具有以下方法:GetAll(…),GetById(…),GetNewest(…),GetAllWithHigherSalaryThan(int salving,int companyId),等等,许多对db的方法访问器.数据库仅在存储库类中使用.
我不想在这里谈论重构.我只想测量每个方法执行多长时间以及在运行时执行了多少次.通过这些信息,我将能够找到错误.
我想测量大约100个方法,这些方法在许多类中都有“从db中选择”.
SQL Server Profiler不能解决问题,因为无数次地执行了这些方法,并且如果可能,使用我们的数据库方法根本无法分析Profiler的日志.
采样方法:
public IEnumerable<Foo> GetFoo(int y, int z)
{
return Context.Where(p =>
p.X == null &&
p.Y == y &&
p.Time >= z).OrderBy(x => x.Time).AsEnumerable();
}
现在我正在考虑将秒表添加到每个方法中,测量执行时间,计数执行次数并将其传递给某个单例或其他某个东西,然后显示它.当然,在完成诊断后,我将关闭该诊断程序,但是这种方法非常耗时,我需要编辑每种方法,而且以后不知道如何将其关闭-我是说我知道我可以使用像#define DEBUG之类的东西,但还是很is脚.
我试图通过反射来解决问题,但是没有效果……也许有一种方法可以查看C#中方法的执行时间?
您有什么推荐的吗?
解决方法:
我的第一个建议是使用合适的探查器,我的最爱是Jetbrains的dotTrace,但还有其他一些.
如果以某种方式这不是一个选择,而您坚持要自己做:
我推荐Postsharp-或其他AOP软件包.它可以做的是轻松地将方面添加到许多方法中.
使用Postsharp,您可以编写一个方面:
[Serializable]
public class TraceAttribute : OnMethodBoundaryAspect
{
public override void OnEntry( MethodExecutionArgs args )
{
// start measuring time here
}
public override void OnExit( MethodExecutionArgs args )
{
// stop measuring here
}
}
然后将这一方面应用到一堆方法(MyNamespace的所有公共方法):
#if DEBUG
[assembly: Trace( AttributeTargetTypes = "MyNamespace.*",
AttributeTargetTypeAttributes = MulticastAttributes.Public,
AttributeTargetMemberAttributes = MulticastAttributes.Public )]
#endif
这是同时检测多种方法所需的所有代码.
我最近刚刚这样做,我将所有度量值都转储到了csv文本文件中,然后又将其转储到了SQL Server中,在那里我可以轻松地进行选择和分组,例如,找出方法消耗的总时间.我之所以没有使用分析器,是因为我在生产环境中进行了测量-仪器的性能影响不会太大(如果程序运行缓慢).
这里是更多信息:
http://www.postsharp.net/aspects/examples/logging
甚至免费版本的PostSharp Express也足以做到这一点.
内容总结
以上是互联网集市为您收集整理的c#-测量许多方法的执行时间全部内容,希望文章能够帮你解决c#-测量许多方法的执行时间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。