iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >.net core抛异常对性能的影响是什么
  • 389
分享到

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

2023-07-02 08:07:27 389人浏览 八月长安
摘要

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

今天小编给大家分享一下.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 最终结论

  • 异常和正常代码性能旗鼓相当,但是全局过滤器对性能影响比较大,大概降低了60%左右,全局过滤器走了管道,但是这跟微软官方的性能优化又有冲突,想必微软官方也是出于对全局过滤器异常处理的考虑吧。同时对于添加了业务的情况下,这个降低会被稀释,没去做压测对比哈,正常用户体量还不至于被这个给影响到稳定性。所以怎么取舍看自己

  • 这里不否定使用 全局过滤器进行业务自定义异常捕获,是否最外层try catch 掉还是全局过滤器去捕获处理,自己根据复杂度和性能两者中自行取舍,至少全局过滤器处理异常从性能角度上来说不是优雅的解决方式

  • 对于非自定义异常,尽量按照微软官方建议

  • 使用 “测试者-执行者”模式

  • “尝试-分析”模式

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

  • 疑问一:大量抛出非自定义异常,性能和正常返回性能对比会如何?比如字符串转换int 不使用TryParse 去转换

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

--结束END--

本文标题: .net core抛异常对性能的影响是什么

本文链接: https://www.lsjlt.com/news/340748.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .net core抛异常对性能的影响是什么
    今天小编给大家分享一下.net core抛异常对性能的影响是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、...
    99+
    2023-07-02
  • 浅析.netcore抛异常对性能影响
    目录一、前言二、求证2.1 使用.net 6 建立了一个简单的web api 项目 新增两个压测接口api接口代码如下2.2 最终结论参考文献异常和正常代码性能旗鼓相当,但是全局过滤...
    99+
    2024-04-02
  • JAVA异常对性能有什么影响
    这篇文章主要介绍“JAVA异常对性能有什么影响”,在日常操作中,相信很多人在JAVA异常对性能有什么影响问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JAVA异常对性能有什么影响”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • JAVA异常是不是对性能有影响
    这篇文章主要讲解了“JAVA异常是不是对性能有影响”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA异常是不是对性能有影响”吧!实验我的实验基于一段随机抛出异常的简单代码。从科学的角度,...
    99+
    2023-06-13
  • JAVA异常是否对于性能有影响
    在对OneAPM的客户做技术支持时,我们常常会看到很多客户根本没意识到的异常。在消除了这些异常之后,代码运行速度与以前相比大幅提升。这让我们产生一种猜测,就是在代码里面使用异 常会带来显著的性能开销。因为异常是错误情况处...
    99+
    2023-06-16
    JAVA 性能 影响
  • 影响http性能的常见因素是什么
    这篇文章主要讲解了“影响http性能的常见因素是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“影响http性能的常见因素是什么”吧! TCP连接建立 ...
    99+
    2024-04-02
  • PHP 数组转对象对性能的影响是什么?
    在 php 中,数组到对象的转换会对性能产生影响,主要受数组大小、复杂性、对象类等因素影响。为了优化性能,可以考虑使用自定义迭代器、避免不必要的转换、批量转换数组等技巧。 PHP中数组...
    99+
    2024-04-30
    性能 php
  • C++ 函数错误处理与异常处理的性能影响是什么?
    在 c++++ 中,处理错误的两种方法,函数错误处理和异常处理,在性能上有所不同。函数错误处理更有效率,因为它不需要创建和抛出异常,并且允许局部处理错误。异常处理更健壮,但会带来额外的性...
    99+
    2024-04-23
    异常处理 函数错误处理 c++
  • 异步编程对 PHP 函数性能的影响
    异步编程可以通过不阻塞主线程和使用轻量级协程来提升 php 函数性能,实战中可用于优化 http 服务器的并发处理能力,从而提高吞吐量和响应时间。 异步编程对 PHP 函数性能的影响 ...
    99+
    2024-04-11
    异步编程 php函数 并发请求 swoole
  • Go语言异步编程对性能的影响
    异步编程通过使用 goroutine 和异步 i/o 提高了 go 语言应用程序的性能:goroutine:轻量级的线程,允许并发任务。异步 i/o:不会阻塞调用线程,提高了 i/o 请...
    99+
    2024-05-08
    go语言 异步编程 apache
  • C++ 技术中的异常处理:异常处理对程序性能的影响有哪些?
    异常处理对 c++++ 程序性能的影响包括:异常抛出和捕获会导致堆栈操作和额外的代码路径。动态内存分配可能导致内存碎片化。优化技巧包括避免过度异常、优化异常处理程序、使用 noexcep...
    99+
    2024-05-09
    程序性能 异常处理 c++
  • C++ 技术中的异常处理:异常处理对程序可读性有什么影响?
    异常处理提升了 c++++ 代码的可读性,因为它:分离了错误处理逻辑,使代码更加清晰易懂。简化了错误处理,提供统一的方法处理不同类型的异常。提高了代码可靠性,能处理不可恢复的错误,防止程...
    99+
    2024-05-09
    异常处理 可读性 c++
  • C++ 函数异常处理的性能影响如何?
    c++++ 异常处理会带来额外的开销,包括内存分配、函数调用展开和查找匹配的 catch 子句。这些开销可能导致缓存未命中,从而影响性能。要减轻这些影响,建议限制异常使用、使用 noex...
    99+
    2024-04-15
    性能 c++ 异常
  • oracle抛出异常的方法是什么
    Oracle抛出异常的方法是使用RAISE_APPLICATION_ERROR函数。该函数允许用户在PL/SQL代码中自定义错误消息...
    99+
    2024-04-02
  • oracle抛出异常和捕获异常的方法是什么
    在Oracle中,抛出异常和捕获异常的方法是通过使用PL/SQL代码块来实现的。1. 抛出异常:在PL/SQL代码块中,可以使用关键...
    99+
    2023-10-20
    oracle
  • css属性的选择对动画性能有什么影响
    本篇文章为大家展示了css属性的选择对动画性能有什么影响,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。现在手机的占比越来越高,各种酷炫页面层出不穷,这些特效都离不开...
    99+
    2024-04-02
  • python异常的传递性及主动抛出的方法是什么
    本文小编为大家详细介绍“python异常的传递性及主动抛出的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“python异常的传递性及主动抛出的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。异...
    99+
    2023-07-05
  • 三个flex属性对元素的影响是什么
    本篇内容主要讲解“三个flex属性对元素的影响是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“三个flex属性对元素的影响是什么”吧!首先我们需要了解,fl...
    99+
    2024-04-02
  • java手动抛出异常的方法是什么
    在Java中,可以使用`throw`关键字手动抛出异常。具体的用法是在代码中使用`throw`关键字,后跟一个`Exception`...
    99+
    2023-09-27
    java
  • PHP 函数版本兼容性对性能有什么影响?
    php 函数版本兼容性影响性能。忽略版本兼容性会导致效率低。较新版本的函数通常采用优化后的算法,可显着提高性能。在使用函数时,考虑其版本兼容性,避免使用已弃用的函数。采用最新版本的函数,...
    99+
    2024-04-25
    性能 php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作