文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.net core抛异常对性能的影响是什么

2023-07-02 08:39

关注

今天小编给大家分享一下.net core抛异常对性能的影响是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、前言

二、求证

2.1 使用.net 6 建立了一个简单的web api 项目 新增两个压测接口api接口代码如下

/// <summary>        /// 正常返回数据接口1        /// </summary>        /// <returns></returns                [HttpGet("Test1")]        public async Task<IActionResult> Test()        {            return Content("1");        }        /// <summary>        /// 抛异常返回接口2 ,同时存在全局过滤器        /// </summary>        /// <returns></returns                [HttpGet("Test2")]        public async Task<IActionResult> Test2(string open)        {            throw new BusinessException(Model.EnumApiCode.SignWrong);        }

全局过滤器代码如下

    /// <summary>    /// 全局异常日志    /// </summary>    public class ExceptionFilter : IExceptionFilter    {        /// <summary>        ///         /// </summary>        /// <param name="context"></param>        public void OnException(ExceptionContext context)        {            //不做任何处理,直接返回1            context.Result = new JsonResult("1");        }    }   //全局过滤器注入   services.AddControllers()       .AddMvcOptions(option =>       {             option.Filters.Add<ExceptionFilter>();       });

现在对test1 接口并发200的情况下进行压测,持续15分钟的压测结果如下:

.net core抛异常对性能的影响是什么

对通过全局过滤器捕获异常并大量抛出异常 在相同压测条件情况下的压测结果如下:

.net core抛异常对性能的影响是什么

对test1 和test2 同等条件下压测结果对比

接口tpscpu压测条件
test110300左右cpu消耗90%左右并发200,持续压测
test24300左右cpu消耗100%左右并发200,持续压测

目前得到的结论是抛异常确实影响性能,并且对性能下降了60% 左右,上面主要是异常流程走了全局过滤器方式,故参考意义不大,下面再进一步修改代码进行压测

对test2 代码进行修改如下

/// <summary>        /// 抛异常返回接口2 ,直接try catch 不走全局过滤器        /// </summary>        /// <returns></returns                [HttpGet("Test2")]        public async Task<IActionResult> Test2()        {            try            {                throw new BusinessException(Model.EnumApiCode.SignWrong);            }            catch (Exception ex)            {                return Content("1");            }        }

再对修改后的test2 接口进行压测,压测结果如下:

.net core抛异常对性能的影响是什么

接口tpscpu占用压测条件
test110300左右90% 左右并发200,持续压测
test29200左右91% 左右并发200,持续压测

进一步得到的结论是try catch 后性能有所提高,跟正常相比还有点点差距,全局过滤器对性能影响比较大,相当于走了管道,但是观察代码test1 和test2代码还存在差距,怀疑test2 代码中new 了新异常导致性能差异,故再进一步进行代码修改求证

对test1 代码进行修改,修改后的代码如下:

 /// <summary>        /// 正常返回数据接口1,但是先new 异常出来,保持跟上面test2 代码一致        /// </summary>        /// <returns></returns                [HttpGet("Test2")]        public async Task<IActionResult> Test2(string open)        {            var ex= new BusinessException(Model.EnumApiCode.SignWrong);            return Content("1");        }

对修改后的test1 代码进行压测结果如下:

.net core抛异常对性能的影响是什么

忘记截图,大概和修改后的test2 代码压测结果相差不大,大概tps 9300左右,故还是拿的上一个图贴出来,谅解

接口tpscpu占用压测条件
test19300左右90%左右并发200,持续压测
test29200左右90%左右并发200,持续压测

进一步得到的结论是try catch 后性能和正常返回代码性能相当,相差无几,可以忽略不计

2.2 最终结论

最后抛出一个待求证的问题

以上就是“.net core抛异常对性能的影响是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯