Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 测量Web服务的每一层所花费的时间_C#_Performance_Architecture - Fatal编程技术网

C# 测量Web服务的每一层所花费的时间

C# 测量Web服务的每一层所花费的时间,c#,performance,architecture,C#,Performance,Architecture,我有一个WCF REST Web服务(.NET 4),它是基于多层体系结构(即表示、逻辑、数据访问等)设计的。在运行时,如果没有插装,我想测量每个层的单个请求需要多少时间(例如,表示=2ms,逻辑=50ms,数据=250ms) 考虑到我不能将方法签名更改为传入秒表(或任何类似的东西),您将如何完成这样的事情 谢谢 我最近一直在研究性能增强和.NET性能工具。似乎是目前为止最好的候选人 特别是,可以生成跟踪配置文件。这些配置文件详细说明了每种方法所需的时间: 跟踪分析是一种非常精确的分析方法,它涉

我有一个WCF REST Web服务(.NET 4),它是基于多层体系结构(即表示、逻辑、数据访问等)设计的。在运行时,如果没有插装,我想测量每个层的单个请求需要多少时间(例如,表示=2ms,逻辑=50ms,数据=250ms)

考虑到我不能将方法签名更改为传入秒表(或任何类似的东西),您将如何完成这样的事情


谢谢

我最近一直在研究性能增强和.NET性能工具。似乎是目前为止最好的候选人

特别是,可以生成跟踪配置文件。这些配置文件详细说明了每种方法所需的时间:

跟踪分析是一种非常精确的分析方法,它涉及 无论何时输入或离开函数,都从CLR获取通知。 这两个通知之间的时间作为执行时间 函数的时间。跟踪分析可以帮助您了解精确的计时 函数级别上的信息和调用数

此屏幕截图说明了该工具可以生成的有用统计信息:


通过检查分析数据,您应该能够准确地看到每个层的单个请求需要多少时间。

如果您无法向解决方案中添加代码,您将使用分析程序来检查代码正在执行的操作,但我只建议在生产环境以外的环境中使用,除非您只是在性能方面有问题。有很多方法可以在负载下设置另一个环境和配置文件

分析器将连接到您的代码中,并检查每个方法需要多长时间。没有“这就是业务层性能”的魔力,因为探查器实现的是物理边界(类、方法)而不是逻辑边界,但是您可以检查输出并确定速度

如果您可以触摸代码,则可以添加其他选项,这些选项可以通过配置打开和关闭。既然您已经声明您不能更改代码,我想这是一个非选项。

有一个,按语法,您使用一个
using
语句,using语句中发生的所有事件的持续时间都会记录到标准的Ent Lib日志记录生态系统中

使用(新跟踪器()) { //你的代码在这里。 }


更多,更多,;有不同的构造函数,允许您传递不同的标识符,以帮助您跟踪记录的内容。

PostSharp可能会有所帮助,或者更多关于为什么使用dotTrace的信息会有所帮助(尽管我不是下一个投票人)。@John-感谢您鼓励我补充答案。希望它更有用。最近没有使用dotTrace,也不知道此功能