二十三、性能分析(MiniProfiler)

通过性能分析能够让我们写出高质量高效率的代码。

关于性能分析

在 Hoa Framework 框架中,已经默认对所有的请求、调用的业务方法、数据库操作进行了完整的性能监听。主要是基于 MiniProfiler 组件实现。

启用性能分析组件

默认情况下,Hoa Framework 框架已经启用了性能分析选项,如需自行配置,可以在 Hoa.Web.Host.appsetting.json 中配置即可,如:

{
  "AppConfigOptions": {
    "EnableGlobalAuthorizationFilter": false,
    "EnableGlobalUnifiedResultFilter": false,
    "EnableCorsSupport": true,
    "EnableGlobalPerformanceAnalysis": true,  // 启用全局性能分析,设置为false,不启用
    "EnableRedisCache": false
  },
}

如何分析

当我们启动 Hoa Framework 默认启动项目 Hoa.Web.Hoa 时候,浏览器就会自动跳转到 Swagger 页面,同时左上角会自动增加一个性能分析的小UI组件,如:

这个UI组件会自动监听你的所有请求、数据库操作、异常信息,提供非常直观的数据报表。其中包括请求/执行时间,调用耗时等。如:

通过这些时间,我们就可以去优化我们的代码,提高我们的代码质量。

手动分析

有时候,我们希望能够知道某一段或者某一行代码的执行时间,这时候可以手动监听,如:

// 如:分析获取用户收据性能
using (MiniProfiler.Current.Step("InitUser"))
{
    var user = User.Get();
    user.Init();
}

// 分析访问google网站性能
var url = "https://google.com";
using (profiler.CustomTiming("http", "GET " + url))
{
    var client = new WebClient();
    var reply = client.DownloadString(url);
}

// 还可以不适用using
var url = "https://stackoverflow.com";
var html = MiniProfiler.Current.Inline(() => new WebClient().DownloadString(url), "Fetch Stack Overflow");

最后更新于