使用Dottrace跟踪.net代码执行时间
2013-12-27 15:19
411 查看
当程序遇到性能问题,如IIs请求反应缓慢,.net客户端程序执行缓慢,如何分析是哪里出了问题?dottrace可以帮助.net程序跟踪出代码里每个方法的执行时间,清晰的看出是哪里执行时间过长,然后再分析应该怎样解决。
Dottrace是由JetBrainshttp://www.jetbrains.com/ 公司开发的一款产品,它分dottrace Performance和dottrace Memory 两个工具,dottrace Performance用来分析代码性能,比如函数执行时间,调用次数,消耗时间比率等,dottrace可以跟踪.net编写的:应用程序,IIS挂接的程序,windows服务,silverlight,WCF服务程序等。
使用实例:
1.选择要追踪的程序类型:
选择IIS Application
2.选择可执行程序路径和参数并配置追踪方式
profiling type 有三种类型:
Tracing:它是通过获取CLR内部一个方法开始执行和结束执行的时间差来计算的分析时间。
Line-by-line:它是通过收集代码执行的每条语句的时间来,它计算出的时间更精确。
Sampling:它是抽样的方式,每隔一段时间(windows下大概是10ms),会暂停所有线程,并抓取堆栈里的信息,然后计算出代码执行时间差,这个选项可能会导致一些执行很短的方法抓取不到的问题。
Measure的三种类型:
Wall time(performance counter): 它是通过Performance Counter API来收集的信息,一般操作系统和各个硬件设备都提供性能计数的API供程序调用。
Thread time:它只支持Sampling的分析方式,它通过一个固定的线程来抓取堆栈信息计算时间,并且它只计算自己内部程序执行的时间,不管等待其他IO的时间。
Wall time(CPU instruction):它是通过读取TSC processor register里记录的方法进入和退出时间差的方式来计算的。
根据上面的选项方式,一般我们要想完整分析自己程序的执行时间,建议可以采用Line-byline(或Tracing)和Wall time(CPU instruction)或Wall time(performance counter)的方式,因为如果用抽样和Thread time的搭配方式,会只计算自己内部时间,不能计算自己程序和外部程序交互的时间,会让自己分析性能时产生误导。
3.点击Run后会运行追踪程序,点击startProfiling,开始抓数据
数分钟后点击上图中的Get Snapshot就会产生程序执行的调用堆栈快照,里面就有我们最关心的执行时间,
Dottrace是由JetBrainshttp://www.jetbrains.com/ 公司开发的一款产品,它分dottrace Performance和dottrace Memory 两个工具,dottrace Performance用来分析代码性能,比如函数执行时间,调用次数,消耗时间比率等,dottrace可以跟踪.net编写的:应用程序,IIS挂接的程序,windows服务,silverlight,WCF服务程序等。
使用实例:
1.选择要追踪的程序类型:
选择IIS Application
2.选择可执行程序路径和参数并配置追踪方式
profiling type 有三种类型:
Tracing:它是通过获取CLR内部一个方法开始执行和结束执行的时间差来计算的分析时间。
Line-by-line:它是通过收集代码执行的每条语句的时间来,它计算出的时间更精确。
Sampling:它是抽样的方式,每隔一段时间(windows下大概是10ms),会暂停所有线程,并抓取堆栈里的信息,然后计算出代码执行时间差,这个选项可能会导致一些执行很短的方法抓取不到的问题。
Measure的三种类型:
Wall time(performance counter): 它是通过Performance Counter API来收集的信息,一般操作系统和各个硬件设备都提供性能计数的API供程序调用。
Thread time:它只支持Sampling的分析方式,它通过一个固定的线程来抓取堆栈信息计算时间,并且它只计算自己内部程序执行的时间,不管等待其他IO的时间。
Wall time(CPU instruction):它是通过读取TSC processor register里记录的方法进入和退出时间差的方式来计算的。
根据上面的选项方式,一般我们要想完整分析自己程序的执行时间,建议可以采用Line-byline(或Tracing)和Wall time(CPU instruction)或Wall time(performance counter)的方式,因为如果用抽样和Thread time的搭配方式,会只计算自己内部时间,不能计算自己程序和外部程序交互的时间,会让自己分析性能时产生误导。
3.点击Run后会运行追踪程序,点击startProfiling,开始抓数据
数分钟后点击上图中的Get Snapshot就会产生程序执行的调用堆栈快照,里面就有我们最关心的执行时间,
相关文章推荐
- 使用Dottrace跟踪代码执行时间
- 使用Dottrace跟踪代码执行时间
- 使用Dottrace跟踪代码执行时间
- 代码性能分析-Dottrace跟踪代码执行时间
- 使用.net 的stopWatch 类来剖析你的代码执行时间
- Dottrace跟踪代码执行时间
- Dottrace跟踪代码执行时间
- 代码性能分析-Dottrace跟踪代码执行时间
- 代码性能分析-Dottrace跟踪代码执行时间
- 在ADF中跟踪SQL执行时间实现代码
- php使用microtime(true)计算php程序代码执行消耗时间
- 统计代码执行时间,使用Stopwatch和UserProcessorTime的区别
- C# TimeSpan计算代码执行时间差的简易使用
- 使用 console.time() 计算js代码执行时间
- 使用Eclipse跟踪JDK代码执行流程
- php使用microtime(true)计算php程序代码执行消耗时间
- .Net统计代码执行时间
- 牛刀小试:使用Reactive Extensions(Rx),一行代码实现多线程任务执行规定时间后自动停止
- php使用microtime(true)计算php程序代码执行消耗时间
- 牛刀小试:使用Reactive Extensions(Rx),一行代码实现多线程任务执行规定时间后自动停止