从ASP.NET的性能诟病,到.NET Core的性能持续改进,在每一个.NET Core版本都能看到性能优化提升的介绍。.NET Core3.1在各种性能排行中霸榜,.NET5再度提升了性能,前些天发布的.NET Preview2,通过PGO (Profile-Guided Optimization)来优化二进制内的原生代码,预期全平台能得到 10% 的启动速度提升和吞吐量性能提升!为啥微软花这么大力气做性能提升?因为当下的微服务和云原生时代,服务已经碎片化了,业务会经历更长的调用路径,单一节点性能提升直接影响全局!作为.NET开发者,必须有性能优化意识和方法,才能走在高薪前沿!

优化5大手段

互联网发展至今,各种架构设计优化的思路已经很成熟了,优化的目标就是用更少的资源提供更好的服务,成本利益最大化,常规手段如下:

时间换空间,大文件处理时,切分数据分批次处理,花更多的时间,用更少的空间完成处理。

异步化:各种消息队列就是典型案例,将业务分拆,避免阻塞,提升吞吐量。

分治:典型的归并排序、快排,都是将数据分成小块儿排序最终再合并,分而治之。

并行:包括多线程和单线程多进程两种模式,就是将任务分开,同时执行以加快速度。

集群化:提供良好的扩展能力,更多的资源换取更好的性能。

优化3大工具

性能调优的方式很多,然而最直接有效的办法就是使用优秀的工具,工欲善其事必先利其器,优秀的工具能让性能调优事半功倍!下面给大家推荐几款常用工具,亲测非常靠谱!

1  BenchmarkDotNet性能基准测试

性能测试是开发人最关心的,然而一个算法的性能在不同的设备、不同的CLR、不同的测试方式、不同的数据量,表现出来的结果也是不一样,因此要测试一个算法的性能,需要在充分的背景下才有意义,这就是性能基准测试,C#首选的就是大名鼎鼎的BenchmarkDotNet。这是一个用MIT协议开源的C#程序性能测试库,非常简单易用,开源地址为https://github.com/dotnet/BenchmarkDotNet。现在向Github提交代码前,都会来一波性能测试,用法也非常简单,直接用BenchmarkDotNet即可。在Github上经常能看到下图内容,就是基于Benchmark做的性能基准测试结果。

2  JMeter压力测试

压力测试是一个项目质量的基础保障行为,没有经过压测的项目怎敢上线?说到压力测试,重量级的Loadrunner这些年用的要少一些了,很多专业测试,也是使用JMeter来做压测了。JMeter是Apache公司基于Java开发的一款开源压力测试工具,体积小,功能全,是一个轻量级的测试工具,使用起来非常简单。其原理是通过中间代理,监控与收集并发客户端发现的指令,将其生成脚本,并发送到应用服务器,再监控服务器反馈结果的一个过程。有着详尽的可视化界面,让开发者可以针对性去优化,有的放矢!

3 JetBrains DotTrace内存优化

.NET开发者一般不怎么关心GC和内存泄漏问题,然而一旦发生了,往往就束手无策了。这里给大家推荐下JetBrains DotTrace Memory,亲测最好用的性能调试,内存优化工具!DotTrace Memory支持两种模式,识别即时内存状态,或者动态监控内存分配,拥有丰富的快照视图,还能快速查找关注的对象数据,甚至可以追踪到对应的源代码文件,应用起来效率非常高!

落地实践

性能调优从来都不简单,类似的工具还有很多,然而百闻不如一见,工具还是操作起得来最直观,优化还是数据最好看!今晚八点,我会在线直播演练BenchmarkDotNet多场景代码基准性能测试,JMeter压测Docker里面的Core WebAPI实例,DotTrace监控内存分配和碎片管理,分享多年积累的性能优化经验,欢迎扫码进群关注。

写在最后

从事多年IT,也见识无数码农,深知IT不易,也不是每一份儿努力都能换来对应的回报。当下正值金三银四跳槽季,我们更应该在CRUD之余,去关注下框架,关注下底层,关注下架构,关注下调优,争取让自己的付出拿到更好的回报。新年跳槽季,这里准备了一系列.NET5实战教程、微服务架构教程、多套高频笔面试题等,能助你跳槽加薪一臂之力,请扫码领取!

扫码添加好友即可免费领取

添加微信:zhaoxi066也可获取

.NET6发布了Preview2,这点超越过去10年!相关推荐

  1. 快速理解编程结构_微软重磅发布新语言Bosque,超越结构化编程

    本文由 「AI前线」原创(ID:ai-front),原文链接:微软重磅发布新语言Bosque,超越结构化编程 策划编辑 | Natalie 整理 & 编译 | Vincent 编辑 | Vin ...

  2. sougou ubuntu 优麒麟_搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10

    搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10 fenshezhuiyi2 2019年10月19日 暂无评论 阅读 4,346 次 昨天已发布优麒麟操作系统 19.10 版本 ...

  3. 英伟达发布全球最大GPU:性能提升10倍,售价250万

    夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 英伟达的新杀器又来了. 刚刚,在GTC 2018大会上,黄仁勋发布全球最大GPU. 他说的是DGX-2. DGX-2能够实现每秒2千万亿次浮 ...

  4. 暴风影音第五代发布:左眼技术画质超越DVD

    暴风影音5今日正式发布.据介绍,暴风影音5最明显的特点是,通过"左眼技术"能显著提升画质. 据了解,一般的播放器是将整部电影作为对象处理,而"左眼技术"则是在画 ...

  5. 十周年再发重磅新品,小米发布50倍潜望式变焦小米10青春版、MIUI 12

    2020年4月27日,小米集团旗下小米品牌举办新品发布会,小米10青春版.MIUI12两款重磅新品正式发布,一同亮相的还有小米手表Color X Keith Haring联名版和小米蓝牙耳机Line ...

  6. Homebrew 1.9发布,将支持Linux与Windows 10

    近日,知名包管理器Homebrew发布1.9版本,开始测试支持Linux和Windows 10(基于Windows 10上的Linux子系统WSL),Homebrew在Linux上将使用Linuxbr ...

  7. Gradle发布4.7版本,支持Java 10

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ gradle是一个综合性的多语种构建工具,已经发布了4.7版,新功能包括: \\ 增量式注解 ...

  8. 西北大学发布猴脸识别论文,公开 10 种动物面部数据集

    内容提要:在人脸识别日趋成熟的今天,研究人员已经开始将这一技术扩展到动物研究中.最近,西北大学 研究团队提出的「猴脸识别技术」,不仅能识别出金丝猴,还能具体到是哪只猴.这对于金丝猴的保护有着重要意义. ...

  9. 英伟达发布ChatGPT专用GPU,性能提升10倍,还推出云服务,普通企业也能训练LLM...

    Pine 发自 凹非寺 量子位 | 公众号 QbitAI "AI的iPhone时刻已至",英伟达或成最大赢家. 在GTC2023大会上,黄仁勋接连放出大招: 不仅发布了ChatGP ...

最新文章

  1. SpringMVC 返回json
  2. tcp/ip ---数据封装过程
  3. 关于ping命令的工作原理
  4. 中国塑料泵行业市场供需与战略研究报告
  5. 通俗易懂的Monte Carlo积分方法(四)
  6. Struts2 面试题
  7. xdg在Linux中的用法,Linux – XDG (X Desktop Group)
  8. java能自学吗_java能自学吗?
  9. mysql查询财两个人信息_MYSQL学习与数据库综合实验—数据查询实验
  10. C语言实现植物大战僵尸----学习过程
  11. MySQL视图简单操作
  12. Word教程-给10以上的数字加个圈圈!
  13. php编程模块英文缩写_php的英文全称是什么
  14. dz论坛附件在服务器中的位置,Discuz! 远程附件设置图文说明
  15. Android自定义日历源码收集
  16. 双汇集团网站搜索引擎友好性分析报告
  17. 这些8个js技巧可以让你的开发事半功倍
  18. SDNUOJ.1105.椭圆(记得避坑)
  19. 他们不会使用计算机的英语句,给下列的句子翻译成英语。
  20. 对OpenStack运维架构的总结(转)

热门文章

  1. jquery网页刷新后控件失效_jquery动态增减控件如何才能不刷新页面
  2. python中loop函数_python + Django 的forloop功能试验讲解
  3. 数据分析入门_char01
  4. 中国古代历朝首都一览
  5. 数据结构(java语言描述)顺序栈的使用
  6. Koa -- 基于 Node.js 平台的下一代 web 开发框架
  7. android sim iso,android – 意外的telephonyManager.getSimCountryIso()行为
  8. Python基础教程:Python pass语句详解
  9. HashMap是如何工作的
  10. mysqldump导出备份数据库报Table ‘performance_schema.session_variables‘ doesn‘t exist