从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也可领取

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

  1. 还没使用过Web Worker,推荐一款开源工具Workerize,快速上手

    还没使用过Web Worker,推荐一款开源工具Workerize,快速上手 开源项目:https://github.com/developit/workerize 将模块移动到 Web 辅助角色中, ...

  2. 还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker

    还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker Workerize-Loader 将模块及其依赖项移动到 W ...

  3. 还没买到票?快试试这个Python开源工具,支持多任务抢票

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI 据统计,量子位有超过50%的员工,目前为止没抢到票. 买了加速包,好久也没动静. 能依靠的只有勤劳的双手,但每天收到的都是12306送来的 ...

  4. 研发 3D 引擎顺便做了个开源游戏案例,Cocos 宝藏同事竟在我身边!

    说实话,本来只是想做个练手小游戏,结果停不下来了. --<iles>制作人/程序 youyou 这周五(8月19日)上午10:00,全新的 3D 跑酷闯关+建造游戏源码<iles&g ...

  5. 全球最大的第一视角视频数据集开源,取自真实生活,还能提升厨艺

    安妮 编译整理 量子位 出品 | 公众号 QbitAI 最近,一个有趣的视频数据集开源了,它不仅能助你研究生涯一臂之力,或许还能提升你的--嗯,厨艺.  这个将锅与视频播放键融于一体的图像,就是刚 ...

  6. 还没抢到票吗?实测两款 GitHub 开源抢票插件,所有坑我们都帮你踩过了

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 晓查 郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今天,已经可以抢过完年回来的火车票了. 如果你对自己手速和市面上的各种& ...

  7. GitHub大神总结的22个顶级开源AI项目,你不会还没用过吧

    开源的人工智能项目并不总是得到很多宣传,但它们在人工智能的发展中起着至关重要的作用.因为这些开源项目经常被开发者作为激发灵感的项目来上手,所以这些进步是创造性的,特别具有前瞻性. 这些开源人工智能项目 ...

  8. 为什么在很多主流引擎都开源的情况下,网易游戏还在做底层技术创新?

    在各路媒体平台上,关于基础研究和底层技术创新的讨论已经持续霸占了一周的头条.一个被赋予了众多意义的事件,引发了各行各业对于核心技术的关注. 底层技术创新是真正的经济基础,它决定了上层建筑的方向.一家公 ...

  9. flv 开源 修复_如何修复开源软件中的错误

    flv 开源 修复 我们都在同一个团队中,并且都朝着使我们的开源软件变得更好的相同目标努力. 您的小贡献会产生重大影响. 开源软件的支持方式与运行方式同样重要. 如果选择构建令人敬畏的新功能,还是仔细 ...

最新文章

  1. IDE ,SAS,SATA,SCSI,SSD硬盘的主要区别
  2. ADAS实际已涵盖20多种功能
  3. 《实时控制软件开发》学生四次作业成绩总排名
  4. 5.5 function
  5. Android创建数据表和LitePal的基本用法
  6. wireshark捕获不到东西_好书分享——Wireshark从入门到精通
  7. 用webstorm自动编译less产出css和sourcemap
  8. Spoken English-口语-练习频次
  9. 计算机网络(三)——TCP/IP协议
  10. 那些年黑了你的微软BUG
  11. 2016年备用的9个顶级动画库
  12. asp.net 事件调用事件问题?
  13. ACM篇:Uva -- 253 Cude Painting
  14. 第4讲 | 区块链的应用类型
  15. wsl2教程可以代替linux吗,WSL2安装使用
  16. python和linux运维学哪个--学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
  17. 文献记录(part107)--Detecting Meaningful Clusters From High-Dimensional Data ...
  18. 如何在 Windows 右键菜单中新建自己想要的文件格式
  19. 计算机系统基础:计算机系统概述
  20. win7系统怎么调亮度_win7系统怎么打开vsd文件 win7系统打开vsd文件步骤【图文】...

热门文章

  1. html与cgi脚本的配合使用
  2. osi参考模型(开放系统互连参考模型)
  3. 两个矩阵相加 Exercise08_05
  4. [BZOJ 1072] 排列perm
  5. SCAU 算法课的题
  6. iOS AVPlayer 简单应用
  7. UVa1607 poj1435 UVaLive1686 Gates
  8. poj 2398 Toy Storage (计算几何,判断点和线段关系)
  9. 二 ASP.NET AutoPostBack
  10. PHP开发学习-Apache+PHP+MySQL环境搭建