.net中MiniProfiler对接口响应速度的影响测试与结果分析

MiniProfiler对接口响应速度的影响测试与结果分析

首次写博客,如有不足之处还请各位盆友不吝赐教。

Miniprofiler想必从事 .net后台开发的朋友或多或少都有所接触。本人由于工作需要,使用Miniprofiler对事务和参数化查询语句的执行情况做日志记录,以便查询事务和SQL执行情况,用于后期优化。接口请求所用工具为Postman,延时为0,分别做了200次请求和400次请求的测试。

 

一、软硬件参数如下

操作系统win10
CPUIntel(R)Core(TM)i5-4210U_CPU@1.70GHz
核心数4核
内存8G
Postman版本7.2.2

注:每种试验次数均为10次,所有结果取10次结果均值,横向测试是指将body数据量扩大为原来的五倍

  • 请求Body为100条学生数据,如下所示的学生对象

{
        "sNo": 2,
        "sex": "男",
        "sName": "张三",
        "room": "222",
        "class": "信科152",
        "regDate": "2019/7/1 0:00:00"
    }
......99,
{
        "sNo": 2,
        "sex": "男",
        "sName": "张三",
        "room": "222",
        "class": "信科152",
        "regDate": "2019/7/1 0:00:00"
    }
  • 在过滤器中使用Miniprofiler的伪代码

 public class ActionFilter : IAsyncActionFilter
    {
       
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
           
            MiniProfiler profiler = MiniProfiler.StartNew("New Access");
            using (profiler.Step("Step1"))
            {
                await next();
            }
            //TODO
       }
  • 数据层使用Miniprofiler的伪代码

  protected DbConnection GetConnection()
        {
            DbConnection connection = new SqlConnection(connectString);
            return new ProfiledDbConnection(connection, MiniProfiler.Current);
        }

 

 

二、100条数据插入接口测试结果如下

2.1、无Miniprofiler的接口测试数据

迭代次数最低耗时(ms)最高耗时(ms)平均耗时(ms)请求成功率
20022.5142.534.35100%
40021172.228.44100%

 

2.2、带Miniprofiler的接口测试数据

迭代次数最低耗时(ms)最高耗时(ms)平均耗时(ms)请求成功率
20033.5141.349.87100%
40030.5192.644.10100%

 

2.3、对比

分支200次平均耗时400次平均耗时
原始34.3528.44
Miniprofiler49.8744.10

 

三、500条数据插入接口测试结果如下

 

3.1、无Miniprofiler的接口测试数据

迭代次数最低耗时(ms)最高耗时(ms)平均耗时(ms)请求成功率
20038.4183.355.67100%
40036224.354.60100%

 

3.2、带Miniprofiler的接口测试数据

并发数最低耗时(ms)最高耗时(ms)平均耗时(ms)请求成功率
20081.3249100.74100%
40077.9268.3102.55100%

 

3.3、对比

分支200次平均耗时400次平均耗时500次平均耗时最低耗时最高耗时
原始55.6754.60   
Miniprofiler100.74102.55   

 

四、结论

经过多次极端试验,得出结论:

  1. 请求次数与响应速度之间无相关关系;

  2. Miniprofiler会增加接口响应速度,增加量会随着数据量的变大而变大。

  3. 数据量为原来五倍大小时,接口响应速度会增加62%-132%。

  4. 数据量不变时,Miniprofiler对接口的响应速度影响为增加响应时间50%-55%。

  5. 数据量为五倍大小时,Miniprofiler对接口的响应速度影响为增加响应时间80%-87%

通过阅读Minirofiler的源码,个人猜测是因为在Miniprofiler在极端情况下之所以影响如此严重是因为他将监控数据序列化为字符串的过程造成的;当我插入数据量大时,sql语句会增多,就导致要序列化的数据就更多,所以变慢;但这也只是我个人猜测,没有仔细论证,所以还请各位大神多多指教。

之所以要对Miniprofiler进行如此极端测试完全是我好奇心的驱使,对于一般项目,事务中的SQL语句应该不会超过一百条(我瞎猜的,我做过的项目太少),对于一般项目Miniprofiler还是一款很不错的性能分析工具,当事务中的SQL为50条以内时,性能损耗几乎可以忽略不记(本人已做过测试,数据就不放了)。

如需Demo代码请留言给我欧,谢谢大家阅读,请多多指教!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值