如何统计await方法的执行时间
How to count await method execution time
我正在做一个.net 核心项目。其中我必须计算我的 await 方法在执行时占用了多少。
[HttpPost]
public async Task<bool> InsertIntoDatabase([Frombody] StudentModel objStu) {
//For Each method and other stuff
await DoInsert(Fiels Details);
}
我在Ajax中调用这个方法。所以在成功执行代码后,我想 return 该方法所用的时间(以分钟为单位)。
此插入过程包含 500 多条记录。所以,我有兴趣计算时间
一种方法是使用 Stopwatch
[HttpPost]
public async Task<bool> InsertIntoDatabase([Frombody] StudentModel student)
{
var clock = new Stopwatch();
clock.Start();
await DoInsert(student);
clock.Stop();
var minutes = clock.Elapsed.TotalMinutes();
}
为什么不 return 在您的任务中使用时间和结果的自定义对象?
private async Task<MyClass> GetResult()
{}
public class MyClass
{
public bool Success { get; set; }
public long TimeInSeconds { get; set; }
}
我强烈建议您查看 MiniProfiler。
设置起来非常简单!
- 通过 Nuget 安装 MiniProfiler
- 将 MiniProfiler 标签助手添加到您的 _Layout.cshtml
- 将 MiniProfiler 标签 (
<mini-profiler />
) 添加到您的 HTML(我也将我的添加到 Layout.cshtml)
- 添加到 Startup.cs 中的服务:
services.AddMiniProfiler(options =>
{
options.RouteBasePath = "/profiler";
options.SqlFormatter = new SqlServerFormatter();
});
- 在 调用
app.UseStaticFiles()
之后添加:
if (env.IsDevelopment())
{
app.UseMiniProfiler();
}
现在 MiniProfiler 已准备就绪,只会出现在开发阶段(第 5 步)。要分析一些代码,请执行以下操作:
using (MiniProfiler.Current.Step("This Will be the label displayed on the front end"))
{
//code you want to profile
}
现在 运行 您的代码,瞧! MiniProfiler 会在您的页面上放置一个非常小的 table(我认为它默认为左上角)。每行都是请求的过去(也适用于 AJAX!)。
我正在做一个.net 核心项目。其中我必须计算我的 await 方法在执行时占用了多少。
[HttpPost]
public async Task<bool> InsertIntoDatabase([Frombody] StudentModel objStu) {
//For Each method and other stuff
await DoInsert(Fiels Details);
}
我在Ajax中调用这个方法。所以在成功执行代码后,我想 return 该方法所用的时间(以分钟为单位)。
此插入过程包含 500 多条记录。所以,我有兴趣计算时间
一种方法是使用 Stopwatch
[HttpPost]
public async Task<bool> InsertIntoDatabase([Frombody] StudentModel student)
{
var clock = new Stopwatch();
clock.Start();
await DoInsert(student);
clock.Stop();
var minutes = clock.Elapsed.TotalMinutes();
}
为什么不 return 在您的任务中使用时间和结果的自定义对象?
private async Task<MyClass> GetResult()
{}
public class MyClass
{
public bool Success { get; set; }
public long TimeInSeconds { get; set; }
}
我强烈建议您查看 MiniProfiler。 设置起来非常简单!
- 通过 Nuget 安装 MiniProfiler
- 将 MiniProfiler 标签助手添加到您的 _Layout.cshtml
- 将 MiniProfiler 标签 (
<mini-profiler />
) 添加到您的 HTML(我也将我的添加到 Layout.cshtml) - 添加到 Startup.cs 中的服务:
services.AddMiniProfiler(options =>
{
options.RouteBasePath = "/profiler";
options.SqlFormatter = new SqlServerFormatter();
});
- 在 调用
app.UseStaticFiles()
之后添加:
if (env.IsDevelopment())
{
app.UseMiniProfiler();
}
现在 MiniProfiler 已准备就绪,只会出现在开发阶段(第 5 步)。要分析一些代码,请执行以下操作:
using (MiniProfiler.Current.Step("This Will be the label displayed on the front end"))
{
//code you want to profile
}
现在 运行 您的代码,瞧! MiniProfiler 会在您的页面上放置一个非常小的 table(我认为它默认为左上角)。每行都是请求的过去(也适用于 AJAX!)。