.NET开源5年了,这些宝藏你还没get?

从2016年微软发布.NET Core1.0,至今.NET开源也快5年了,GitHub也涌现了很多优秀的开源项目,关于CLR层面调优的讨论也多了起来,尤其是龙芯.NET开源的CLR迁移项目,更是让.NET进入一个全新的时代。鲁迅说过:菜鸟写业务,老鸟搭架构,高手玩调优。架构优化,性能调优都是食物链顶端的技术,高薪面试必备良品。

架构优化

架构优化

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

时间换空间

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

分治思想

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

异步化

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

并行

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

集群化

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

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

BenchmarkDotNet性能基准测试

性能测试是开发人最关心的,然而一个算法的性能在不同的设备、不同的CLR、不同的测试方式、不同的数据量,表现出来的结果也是不一样,因此要测试一个算法的性能,需要在充分的背景下才有意义,这就是性能基准测试,C#首选的就是大名鼎鼎的BenchmarkDotNet。

这是一个用MIT协议开源的C#程序性能测试库,非常简单易用,开源地址为https://github.com/dotnet/BenchmarkDotNet。现在向Github提交代码前,都会来一波性能测试,用法也非常简单,直接用BenchmarkDotNet即可。在Github上经常能看到下图内容,就是基于Benchmark做的性能基准测试结果。

JMeter压力测试

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

JetBrains DotTrace内存优化

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

实操起来

性能调优从来都不简单,类似的工具还有很多,本文抛砖引玉,欢迎留言交流。百闻不如一见,工具还是操作起得来最直观。今晚八点,我会在线直播演练BenchmarkDotNet多场景代码基准性能测试,JMeter压测Docker里面的Core WebApi实例,DotTrace监控内存分配和碎片管理,总结一些常规的性能优化经验,欢迎扫码找Nico可免费预约直播,加入微软MVP学习群,群里有上述工具包!限时开发,赶快扫码和大家一起学习!

写在最后的话                                                             

从事了多年IT,突然感觉职业生涯迷茫,尤其是最近闹得沸沸扬扬的拼多多事件,更让从事互联网IT的打工人,难以释怀自己的打工魂。如果我们无法控制自己的努力程度,起码我们去控制下自己的努力方向,让付出更有回报!写惯了CRUD,也去关注下底层,关注下调优,争取让自己的付出拿到更好的回报。这里还给整理一些学习资料,《C#数据结构与算法》《MySQL深层调优》,请扫码领取。

扫码免费领取资料

添加微信zhaoxi066也可领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#来创建和读取XML文档 [转]

C#来创建和读取XML文档【关键词】:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML(eXtensible Markup Language)&#xff0…

探索 .NET团队对API的设计流程

原文作者:steve gordon 原文链接: https://www.stevejgordon.co.uk/how-are-dotnet-apis-designed在这篇文章中,我想介绍一些我觉得非常有趣的东西,.NET 团队是如何设计API的?我们先来看下.NET团队面临的有哪些挑战,您…

mybatis mysql usegeneratedkeys_mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录在项目中经常需要获取到插入数据的主键来保障后续操作&#xf…

Istio 知多少 | 下一代微服务的守护者

1. 引言在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完《Service Mesh入门》,又大致浏览了一遍官方文档,对Istio也算有了基本的认识。下面就根据自己的…

微软家也会出错

下图是2006年2月8日微软WebCast首页的截图转载于:https://www.cnblogs.com/mssite/archive/2006/02/08/327130.html

C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项

在 2020 年的最后一天,博客园发起了一个开源项目:基于 .NET 的博客引擎 fluss,我抽空把源码下载下来看了下,发现在属性的定义中,有很多地方都用到了 null!,如下图所示:这是什么用法呢&#xff1…

微前端架构在容器平台的应用

源宝导读:随着业务的发展,天际-星舟平台未来需要解决与其他云共创共建,跨团队高效协作等诸多问题,而星舟现有的技术架构将难以支撑。本文将介绍星舟平台如何通过向更先进的“微前端”架构演进落地,以应对将来快速增长的…

Microsoft PHP.Net ?

居然发现老外有个项目在把PHP搞成象。NET那样咯,核心是Framework 上把 PHP 编译为MSIL。居然见http://www.php-compiler.net/,而且今年居然还FINAL 1.0出来了,这对象把PHP放到.NET平台上来的人说是好消息。20 February 2006: Phalanger versi…

巧用 Lazy 解决.NET Core中的循环依赖关系

原文作者: Thomas Levesque 原文链接:https://thomaslevesque.com/2020/03/18/lazily-resolving-services-to-fix-circular-dependencies-in-net-core/循环依赖的问题在构建应用程序时,良好的设计应该应避免服务之间的循环依赖, 循环依赖是指某些组件直接…

java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...

原标题:怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习Java的学习中,并没有那么的繁琐,只需要我们逐步掌握,就能够发觉java是全世界最好的编程语言之一。那么今天就带领大家进行简单的JAVA初级学…

小试elsa

最近工作需要,在调研BMP产品(开源和商用),重点了解了activiti和它的商业产品Alfresco Process Services,这是java的体系,成熟,完善(三方开源库是java多年开源积累下的最宝贵的财富),…

java抠图人物背景图片_如何进行人物抠图?让你快速完成复杂背景人像的在线抠图...

大多数男生心目中都有一个女神,虽然在其他人眼中不过是普通人,但是在自己眼中她怎么看怎么有魅力。当然对于女神提出的各种各样的“要求”或是请求,你们定然是不会轻易拒绝的。但若是女神需要你帮忙抠图,你知道如何进行人物抠图吗…

防止多次提交的几个比较

1、利用Session(viewState是不行的,viewState要回传才能读到数据)如果有个数据包类StockBillMP,则设定privateStockBillMP M_saveobj { get { return (Session["saveobj"] null)?null:(StockBi…

【日常排雷】 .Net core 生产环境appsetting读取失败

关键词System.ArgumentNullException: String reference not set to an instance of a String. (Parameter s)1.问题出现某年某月某日,把webapi开发完了,也通过了swagger进行了单元测试。dotnet build dotnet publish -o publish dotnet .\publish\xx.We…

ABP vNext 自动注入,暗藏天坑如斯

导言我们在使用ABP vNext框架时,都知道该框架为我们实现了自动依赖注入(实现自动注入需要在项目里面创建Module类,并且将Module类上的DependsOn到相应的启动Module类或调用Module类,这步很关键)自动注入示例只要我们实现如下接口:…

Community Server系列之四:Ajax在CS2.0中的应用1

Ajax技术在时下很热门,当然在CS2.0中也不例外的运用到了此技术,CS2中没有使用任何第三方Ajax控件,这就给我们提供一个研究Ajax机理的好地方,现介绍一下在CS2中Ajax的一些简单应用,并分析应用的原理。 我想要研究此技术…

为什么人和人的差距这么大?

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份这是一篇去年写的旧文,不少读者从这篇文章中获得了一些方法和力量,于是再分享下:工作和生活中不光要埋头干活,还要抬头看天。思考总结方法论是提升认知的必备途…

github可以传java吗_如何在github上传本地项目代码(新手使用)----亲测使用

首先你要在github上申请一个账号然后你要下载一个git工具进入官网直接下载就行,下载完成后进入github首页,点击新项目new repository(新建),如下图所示:然后进入如下页面,主要填写红色圈起来的几个部分,如下…

【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0

在微服务场景中,身份认证通常是集中处理,这也是有别于单体应用一把梭哈的模式,其中,在微软微服务白皮书中,提供了两种身份认证模式:网关,没错,原话是If youre using an API Gateway,…

ABP vNext分布式事件总线RabbitMQ注意事项

[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext官方文档链接),基本使用可直接阅读官方文档,云怀不重复造轮子,只做官方未提到但重要的说明关键配置说明关键配置类:AbpRabbitMqE…