博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《编写高性能.NET程序-Concurrency in .NET》(1)- 为什么要读这本书?
阅读量:6956 次
发布时间:2019-06-27

本文共 2102 字,大约阅读时间需要 7 分钟。

最近 对如何编写高性能.NET程序发起了讨论。
 
首先是在ORM和SQL方面进行了讨论,主题当然是经久不衰的月经贴: EF性能很差.
Edi.Wang专门写了一篇文章< > 说明了只要正确使用EF, 性能并不差.
我自己用EF十年了, 也没有感觉到EF性能差. 我的解决方法是把EF最常见性能瓶颈,比如审计日志进行优化. 之前是异步记录日志, 最近的做法是术业有专攻, 记录日志就扔给最擅长做日志的ELK组合去做. 同时ABP的审计日志也是用EF的,在大型项目里面性能也不差,详情可以看我的另一篇文章:《 》。这可是既有大量数据又有多表关联查询哦。
 
可见, .NET性能并不差, 而且随着.NET的不断进步, 优化门槛越来越低, 只要你找到获取这类知识的渠道,花点时间, 很快就可以编写出高性能的.NET程序.
 
然后又说到FP(函数式编程).
FP(函数式编程)是一种和OOP(面向对象编程)不一样的编程方式.
对于OOP(面向对象编程), 绝大多数人都知道.
然而对于FP(函数式编程), .NET俱乐部里的绝大多数人并没有感觉, 因为感觉日常没有用到啊, 而且FP类编程语言Erlang和Go距离我们.NET程序员太远了.
其实.NET俱乐部里的绝大多数人都用过FP, 只要用过前端三大框架(Angular/React/Vue)的朋友们都用过FP了. 比如如下代码:
 
this.XXXService.getPagedXXXList(      this.filterText,      request.sorting,      1000, // request.maxResultCount,      0// request.skipCount,    )      .finally(() => {         finishedCallback();      })      .subscribe(result => {
//这里用到了FP(函数式编程) this.dataList = result.items; this.totalItems = result.totalCount; this.showPaging(result); this.loading = true; });

  

哈哈, 看到这段代码是否恍然大悟, 原来我天天都在用FP啊!
那么FP是什么时候很低调的活在我们日常代码中呢? 为啥他兄弟OOP如此高调,他却如此低调?
OOP在行业里风风火火几十年,但是到了2005年,摩尔定律在单核CPU性能上达到了物理极限!单核时代到了尽头,多核时代开始了!《 》一书的第一章对此有详细描述。
OOP在几十年前提出的时候并没有考虑到多核这种情况。OOP在多核时代暴露了很多缺陷!
当然OOP在多核时代依旧能工作,很多朋友们现在依然在用OOP写程序,但是本文的主题是《编写高性能.NET程序》!!!要想编写高性能.NET程序,就必须要尽量利用多核CPU性能。OOP在这方面具有很多缺陷。
 
而FP的众多特性,比如不可变性,十分适合多核CPU时代,于是FP开始崛起了。随着时间的推移,FP的库开始多起来了,比如.NET里就有Rx.NET这个著名的FP库。
FP不知不觉发展了10年,来到了2015年,随着前端三大框架(Angular/React/Vue)推出,前端开始爆发,FP终于被绝大多数程序员不知不觉的使用了。
 
所以,如果你不满足于仅仅是API调用者,你要编写高性能.NET程序,你要榨干多核CPU的性能,那你必然要开始了解FP了。
 
除了FP之外,《 》一书还提供了很多种方法去榨干多核CPU的性能,比如 TPL/Dataflow。我会继续写这一系列,在后面的笔记里,你会接触到很多你在日常代码中每天都看到的技术名词,比如 async, await关键字, task等类型,但是你可能熟视无睹了。希望你看了这本书或者我这系列笔记之后,不要再说.NET性能差了。
 
什么?《 》目前只有英文版?不要着急,据可靠渠道的可靠消息,很快就会有中文版的啦!等中文版出来后,我会通知大家的。
 
Q&A:
  1. 为了利用多核CPU性能和使用FP,我要放弃C#去学习一门新的语言吗?
    答:不需要,随着C#的不断进步,C#添加了很多关键字和类型去利用多核CPU性能,比如async, await, task,C#也有了FP库,比如Rx.NET,所以你不需要放弃C#,你继续使用C#就可以了。
  2. 这本书和这系列笔记和.NET本质论等赵三本有啥区别?
    答:.NET本质论这类书出版的时候多核CPU时代还没到来,所以这类书籍并没有对.NET如何利用多核CPU进行描述,而这本书和我这系列笔记则是专门针对多核CPU的。

转载于:https://www.cnblogs.com/adalovelacer/p/high-performance-dotnet-application-Concurrency-in-dotNET.html

你可能感兴趣的文章
利用STP生成树协议实现负载均衡
查看>>
三层交换
查看>>
学习——精通软件性能测试笔记
查看>>
一个比特币交易的完整流程
查看>>
定制多系统启动菜单
查看>>
HTML5开发学习教程,学习HTML5还是学习HTML5的制作工具?
查看>>
2019一级消防工程师考试报名条件会有专业限制吗?
查看>>
如何提高Assignment写作效率?
查看>>
给定一个串,去掉连续的重复字母,
查看>>
ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段
查看>>
dd命令
查看>>
cobbler 安装部署
查看>>
0.11.1版本docker安装与使用
查看>>
我的友情链接
查看>>
小学四则运算
查看>>
jenkins+docker的简单项目部署
查看>>
Spring工具类:WebApplicationContextUtils
查看>>
MSR2010配置小记
查看>>
(20120722)(笔记004)android开发应用程序资源
查看>>
Jquery extend的用法
查看>>