我有一个具有多个活动功能的持久功能。我需要记录每个活动函数的执行时间。我目前是这样计算的:
using System.Diagnostics;
namespace Hosts
{
public class ActivityFunctionOne
{
private readonly Stopwatch _stopwatch;
public ActivityFunctionOne()
{
_stopwatch = new Stopwatch();
}
[FunctionName("ActivityFunctionOne")]
public async Task Read([ActivityTrigger])
{
_stopwatch.Start();
await fun.ReadAsync();
_stopwatch.Stop();
// log ("completed in {_stopwatch.ElapsedMilliseconds}");
}
}
}using System.Diagnostics;
namespace Hosts
{
public class ActivityFunctionTwo
{
private readonly Stopwatch _stopwatch;
public ActivityFunctionTwo()
{
_stopwatch = new Stopwatch();
}
[FunctionName("ActivityFunctionTwo")]
public async Task Write([ActivityTrigger])
{
_stopwatch.Start();
await fun.WriteAsync();
_stopwatch.Stop();
// log ("completed in {_stopwatch.ElapsedMilliseconds}");
}
}
}如您所见,我在每个活动函数中都添加了秒表来记录执行时间。是否有一种方法可以在一个位置实现stopWatch并计算每个活动函数的执行时间而不重复?另外,如果稍后添加新的活动函数,是否也可以不添加这些行来计算这些活动函数的执行时间?
发布于 2022-01-25 12:06:57
目前这是不可能的。使用每个活动函数记录执行时间的单个秒表进程。
无论如何,我们需要添加用于Stopwatch.Start()的 start 秒表,以了解特定任务何时可以启动。Stopwatch.Stop()用于stop秒表,以了解可以完成特定任务的确切时间,因此我们需要在开始和结束特定任务之前添加这两行。
Stopwatch _stopwatch = new Stopwatch();
_stopwatch.Start();
// your task to know the execution time.
_stopwatch.Stop();参考这里
发布于 2022-01-27 14:33:52
我不知道在每个活动函数中不使用stopwatch.start()和stopwatch.stop()用ilogger实例记录执行的干净方法。然而,执行时间实际上已经登录到所有活动的appinsights中,对于大多数类型的性能调试来说,这可能是足够的信息。为函数获取它的一个简单查询将是。
traces
| where customDimensions['prop__functionName']=='SomeActivityFunctionName'
| where customDimensions['EventName'] == 'FunctionCompleted'
| project timestamp, customDimensions['prop__executionDuration']https://stackoverflow.com/questions/70685601
复制相似问题