下午亲测了下.Net5,性能确实飞升
性能逼近以高并发著称的 Go
当然我的测试还比较简单,打印:hello + 当前时间
使用云服务器:centos 7.6 2 核 4G
所有程序都打包在 docker 中运行
使用 abtest 测试 与其它语言对比结果如下图:
PS:要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错
1
WangMister 2021-01-04 16:10:11 +08:00 3
|
2
hantsy 2021-01-04 16:13:22 +08:00 1
没做过 .net 项目。
看了 CSharp 9 加入 record, 从 Java 15 代码翻译过去更简单了,写一个玩具。 https://github.com/hantsy/code-challenges/tree/master/csharp >要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错 安装了 .net 5 sdk, 用 rider 和 VsCode 也可以啊。 |
3
hoyixi 2021-01-04 16:14:47 +08:00
多谢分享。
如果再加个 Nodejs 就好了 |
4
hantsy 2021-01-04 16:15:36 +08:00
xUnit, Moq 也还不错,可以代替 Java JUnit+Mockito 。
|
5
kaka6 OP @WangMister
.net 做为企业应用是可以的,做 hr,oa, crm 等协作管理软件问题不大 因为企业应用并发不会太多 之前用.Net 开发的协作管理软件为 3000+员工的企业提供服务,没什么问题 他的稳定性是可以的,以前就是并发不行 |
8
wysnylc 2021-01-04 16:18:49 +08:00
看好,但是还不能作为吃饭的家伙
|
9
telung 2021-01-04 16:20:09 +08:00
现在流行 macOS
|
13
liuhan907 2021-01-04 16:24:53 +08:00 via Android 2
我们有在用 dotnet5 开发,不过是游戏后端。挺棒的,性能瓶颈就从来不在语言这里。
|
16
Grapefruit 2021-01-04 16:29:35 +08:00
目前还在用 3.1,比较期待 MAUI
|
17
fiveelementgid 2021-01-04 16:30:52 +08:00 via Android
(*﹏*;)差不多得了,建议测试一下 EF Core 跨平台辅助性能,大家都不分家,肯定要用的
性能垃圾(.net 5.1)如是说,正头大 |
18
fiveelementgid 2021-01-04 16:32:00 +08:00 via Android
@hantsy 说到点上了,EF Core 用的要吐了
|
20
hantsy 2021-01-04 16:33:12 +08:00
@kiracyan 国内没什么可说的,整个行业都是伸手,代表不了趋势。虽然国内软件从业人员数量很大,但影响力在国际上不如周边的一些小国。就 Java 来讲,老外几乎遗忘了 MyBatis,国内的公司居然是标配。其它国家开发人员中的 Java 比例也不会有中国这么高。
|
21
liuhan907 2021-01-04 16:33:42 +08:00 via Android
@fiveelementgid 我们目前在用 ef,没感觉出性能有瓶颈。你们 ops 有多少遇到了瓶颈?我得看看我们是否会遇到。
|
22
iceneet 2021-01-04 16:33:58 +08:00
.net 在外国还挺火的额 在中国就太少了 不过性能还是很强的
|
23
hantsy 2021-01-04 16:36:37 +08:00 1
@fiveelementgid EF 一直以它的语法 API 优雅著称,操作数据库就像操作本地内存数据一样,刚开始玩 .net ,后面再试一下。Groovy 下的有新项目准备 Copy EF,之前的 GORM 我觉得已经很像了。
|
24
chenqh 2021-01-04 16:37:19 +08:00
国内还是 java, 大公司好一点的还有 golang,其他基本都凉了
|
25
masquerader 2021-01-04 16:38:02 +08:00 2
从.NET Framework 到.NET Core,再到现在的.NET 5 将两者融合到一起,.NET 框架以及核心的语言 C#/F#进步巨大,尤其是命令行工具和对跨平台( macOS/Linux/Windows,X86/ARM )的支持真的让人刮目相看。
我不是以写代码为生,不过业余时间还是会撸撸码研究一些程序化交易。交易很多成熟框架都用 Python,试过几次,无奈实在懒得记动态语言的各种函数,IDE 的提示也做不到像静态语言那样精准迅速,还是决定.NET 生态上自造回测引擎的轮子。选了 F#作为主语言写交易回测框架以及 CTP 的程序化交易。个人感受是无论是写框架,写各种应用( Web/Desktop app ),还是用 REPL/Interactive 进行数据分析,都爽到起飞。 |
26
chenqh 2021-01-04 16:38:42 +08:00
abp 性能那么差吗
|
27
hantsy 2021-01-04 16:39:20 +08:00
目前 .Net 写测试有哪些工具? 目前我只试用了 xUnit, Moq 。
|
28
ntgeralt 2021-01-04 16:52:09 +08:00
一看到 [要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错]
主要是这些 win 自己不自带。难道开发个样品,还要发一堆依赖给客户 富途牛牛和 github win 版都非常优秀,没什么奇葩依赖 |
29
goodboy95 2021-01-04 16:57:35 +08:00
@ntgeralt 跟客户有啥关系,vs2019 是 ide,客户只要一个 runtime.
.Net 5 稳定之后微软一般都会给一个.Net runtime 更新的,就像.Net framework 4.x 一样 |
30
SpiritLingPub 2021-01-04 16:58:32 +08:00
@fiveelementgid ef core 连接使用 mysql,感觉要吐了,各种问题。但是使用 sql server 的话,还是挺好使的,毕竟是一家的,各种做的都挺好的。个人开发或者小型企业大多数使用 mysql,导致 ef core 使用 mysql 贼难受
|
31
quan01994 2021-01-04 17:09:32 +08:00
用啊。
|
32
TypeError 2021-01-04 17:17:29 +08:00 via Android
|
33
diib 2021-01-04 17:18:10 +08:00 4
针对回复说一下吧,dotnet core 5 可以编译成没有 CLR 依赖的本地程序(其实 3 就可以了,5 只是 3 plus 版),如果设计得当还可以编译成单文件程序。
编译命令行类似这样: `dotnet publish -r linux-x64 -c Release /p:PublishSingleFile=true --self-contained` -r 指定平台(经测试,可以在 linux 平台发布 win 平台,另 intel 的 mac 平台编译无问题,m1 尚不清楚) /p 指定了单文件发布 --self-contained 指定了无依赖发布 各参数详情请见 ms 官方文档。 单文件发布需要注意: 1 、确认使用的第三方包支持; 2 、涉及到文件夹操作、c lib 引用的需要充分测试; 另: EF Core 性能优化比较考验人,通常项目上为了性能会直接通过 ADO.NET 和 SQL 来操作 DB ; CLR 自带了 JSON 库,虽说是同一个人开发的,但是生产环境还是使用 NewtonSoft 来保护历史代码; 只要 run 起来,性能从来就不是问题; 5 还不能 UI 跨平台。 |
34
manami 2021-01-04 17:18:23 +08:00
用过 go 就不想写其他语言了
|
35
AX5N 2021-01-04 17:19:50 +08:00
这样一对比,好像 python 的 flask 的效率也不差啊
|
36
Zcyisabigman 2021-01-04 17:21:10 +08:00
@manami 为啥?
|
37
Rwing 2021-01-04 17:22:34 +08:00
|
38
manami 2021-01-04 17:24:07 +08:00
@Zcyisabigman 简单强大,用 go 写项目感觉不用框架都快的飞起
|
41
hantsy 2021-01-04 17:41:52 +08:00
|
42
kaka6 OP 哇,这么多人回复啊
看来语言的争议始终有之 不管如何,挣到钱最重要 祝大家 2021 不管三七二十一,挣大钱 语言不行,机子来凑,无所谓,挣钱是王道 哈哈哈... |
43
jaylengao 2021-01-04 17:56:12 +08:00 1
Running 1m test
2 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.59ms 4.64ms 203.46ms 92.69% Req/Sec 28.01k 4.95k 35.73k 92.00% Latency Distribution 50% 1.51ms 75% 2.73ms 90% 6.70ms 99% 12.89ms 3345736 requests in 1.00m, 810.45MB read Requests/sec: 55733.32 Transfer/sec: 13.50MB aliyun2c4g ubuntu18 我曾经闲的用 wrk 压过 java vert.x 和.netcore5,类似返回 hello world 这种,上面是 vertx 的结果,cpu 没拉满,.netcore5 稍微低一点 cpu 打满 单论语言性能 java/c#/go 其实相差不大 |
44
kaka6 OP @chenqh
abp 框架加载的东西很多,性能并不太好,它就比较适合快速开发 不过.net2.0 在正常情况下 qps 也都在 60 左右,占的初始内存还得 200M 以上 .net5 确实比之前好很多 |
45
forgottencoast 2021-01-04 18:07:43 +08:00
|
46
forgottencoast 2021-01-04 18:08:38 +08:00
@kaka6 用 abp 能带来哪些好处?
|
47
salamanderMH 2021-01-04 18:16:04 +08:00 1
.NET5 确实性能高。
|
48
chinvo 2021-01-04 18:28:19 +08:00 3
质疑性能的可以看看 TechEmpower 的 Web Framework Benchmarks
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite 综合评分 Spring 排第 34,Asp.Net Core MVC 排第 6 数据查询 Asp.Net Core MVC + EF Core + PG 表现不太好, 但是 Asp.Net Core MVC + ADO + PG 表现和 Spring 全家桶不相上下 数据写性能 Asp.Net Core MVC + ADO 更甩 Spring 十八条街 |
49
chinvo 2021-01-04 18:30:19 +08:00
至于 JSON 和 Plaintext 性能, Asp Net Core MVC 的性能也是力压 Spring
|
50
chinvo 2021-01-04 18:32:08 +08:00
.Net 毕竟是晚于 Java 开发出来的语言, 在设计之初就规避了很多 Java 当时已经暴露出来的问题
|
51
Jackeriss 2021-01-04 18:51:59 +08:00 via iPhone
tornado 换 uvloop 才快,和 go 差不多
|
52
fiveelementgid 2021-01-04 18:56:22 +08:00 via Android
@liuhan907 没,学生,在搞 Linux 迁移,经常出现一些莫名奇妙的错误,性能分析的话,主要是 migration 之类的 Linq 语法生成中间层代码
牺牲了部分性能 @hantsy Java 也开始准备抄 @SpiritLingPub 别说 MySQL 了....SQL server 也经常出奇怪的问题 |
53
beginor 2021-01-04 18:58:09 +08:00 via Android
@SpiritLingPub 如果是使用 SQLServer 之外的其它数据库的话, 可以考虑 NHibernate, 我们一直用, 非常稳
|
54
hantsy 2021-01-04 19:02:47 +08:00
@beginor NHibernate 和 Spring.net 还在更新?
|
57
timsensor 2021-01-04 19:12:07 +08:00 via Android 1
一直都很看好.net core,linq 、ef core 、asp.net core 太强大了
|
58
timsensor 2021-01-04 19:13:48 +08:00 via Android
在国内,.net 就差头部公司来带动生态
|
59
hantsy 2021-01-04 19:16:07 +08:00
@chinvo spring-net 好久没更新了,网站还是 2012 年的。代码里面记录还最近跳到 .net 5 重新编译了一下。
|
60
hantsy 2021-01-04 19:16:18 +08:00
|
61
hantsy 2021-01-04 19:16:46 +08:00 1
|
62
charlie21 2021-01-04 19:55:03 +08:00
谁规定的快就要用阿?
|
63
chinvo 2021-01-04 19:55:35 +08:00 via iPhone
@hantsy #56 呃,我不用 spring.net ,也只是粗略看了眼 repo,看来是乌龙了
|
64
SashaMu 2021-01-04 20:03:16 +08:00
这三年进的两家公司都是.net 转 Java
现在新公司也有 .net 转 Java,php 转 Java 的同事 |
66
darknoll 2021-01-04 20:33:58 +08:00
就是性能超过 c++也没啥人用
|
67
aaronlam 2021-01-04 20:37:03 +08:00
.net 在国内真的也就国企用的起了吧,感觉 net core 出来的还是太晚了。。
|
68
beginor 2021-01-04 20:50:44 +08:00 via Android 1
@hantsy spring.net 不清楚。
但是 NHibernate 确实一直在更新, 不仅支持 .Net Standard 2.0, 而且还支持实现了 Asp.Net Core 的 Identity |
72
UnknownSky 2021-01-04 22:20:56 +08:00 via Android
.net ,我寫外掛還是蠻順的
|
73
love 2021-01-04 22:46:10 +08:00
万年扶不起的框架,我最近一次使用都 10 年前了,现在还是这吊样哈哈
推广不力框架本身的问题占最大,没比别的语言开发效率高反而更臃肿,当然这是微软风格 |
74
baba233 2021-01-04 22:48:25 +08:00 via Android
|
75
php8 2021-01-04 23:12:14 +08:00 via Android
国内在互联网以外,.net 用户可不少,只是没有跳出来说,也不像 Java 那样各种分析框架代码,分析各版本 jdk 库的实现差异
|
76
hihanley 2021-01-04 23:12:28 +08:00
@love 你都说了"最近一次使用是十年前了",是怎么得出"推广不力框架本身的问题占最大,没比别的语言开发效率高反而更臃肿"的结论的?
|
77
forgottencoast 2021-01-04 23:38:34 +08:00
@love 国外用的人很多很多,不知道你这个结论是怎么来的。
|
78
bijue 2021-01-05 00:01:16 +08:00 via Android
@UnknownSky 还可以写外挂,不是 c++方便吗。我不是 it 人员,不懂😃
|
79
liuhan907 2021-01-05 00:48:05 +08:00 via Android
@fiveelementgid 我们是从头开始写的 Linux 下的代码,还没遇到系统兼容性问题。ef 的话我觉得迁移代码性能差点也无所谓吧,反正是只跑一次的东西。
|
80
fiveelementgid 2021-01-05 01:35:00 +08:00 via Android
@liuhan907 hhhhhh 也是,问问你们在 VS 上面开发还是直接用 Linux 跑 VSC/Rider 进行开发
|
81
roundgis 2021-01-05 01:45:48 +08:00
@forgottencoast .net 在中國也有很多應用,只不過大多不是互聯網行業,不那麼引人注目罷了
|
82
kaedea 2021-01-05 01:53:40 +08:00 via Android
MAC 上面能用 Visual Studio 吗?
|
84
qinfensky 2021-01-05 06:51:30 +08:00 via iPhone
和 Vert.x 比呢
|
85
X2031 2021-01-05 08:44:10 +08:00 1
.net 用户 在此
|
86
netnr 2021-01-05 08:44:52 +08:00 via Android
现在是基金会打理,不是微软(当然微软是主要贡献者)
|
87
wangxiaoaer 2021-01-05 09:05:14 +08:00
.Net/.NetCore/.Net Framework/ASP.Net/ASP.NET MVC/Web Forms/Core CLR………………
每次想学.Net 的 web 开发都被这些搞大了头,所以真不明白为什么还有人说.Net 简单? 光特么这些概念都把人搞头大了。 你们鄙视的 java 也比他简单啊 ,java web 就是 servlet 那一套,完了主流框架 spring 等就是对 servlet 的封装,完事儿。 有大佬帮忙解释下吗? |
88
Rwing 2021-01-05 09:15:01 +08:00 1
这个。。。。其实都一样,没区别,没有谁更简单谁更复杂之说。
.Net/.NetCore/.Net Framework 你就拿 java/java se/java ee 来理解 ASP.Net/ASP.NET MVC/Web Forms 你就拿 java web/spring mvc/java jsp 来理解 CLR 就是 jvm 咯 |
89
nguoidiqua 2021-01-05 09:19:18 +08:00 via Android
|
90
zhuangzhuang1988 2021-01-05 09:27:17 +08:00 via Android
@wangxiaoaer 看现代前端开发那才叫多。。。
|
91
wangxiaoaer 2021-01-05 09:32:37 +08:00
@zhuangzhuang1988 #90 多吗?主流开发模式也就 jquery 时代-->backbone 为代表的 MVC 时代-->angular 为代表的 MVVM 时代 /以 ReactJS 技术栈为代表的 FLUX 时代,除了 flux 的模式跟之前有点变化外,大多都是换汤不换药,而 flux 的核心也就是 v=f(state)。
至于其他的什么 webpack babel 啥的,都是工具,能跑起来就行。 |
92
chouchoui 2021-01-05 09:33:16 +08:00
太好了又有 go 吹跳出来送,跟风吹见一个 B 一个
|
93
wangxiaoaer 2021-01-05 09:34:21 +08:00
@chouchoui #92 大哥……,你这,虽然我也非常恶心 go 的语法,但是你这是不是有点激动? golang(er)伤害你了?
|
94
pkoukk 2021-01-05 09:40:42 +08:00 2
.net python node go 都写过的表示,c#绝对是世界上对开发者最友好的语言
完善的标准库,规范统一的 api,充足的文档,配合上宇宙级 ide vs,断网开发一个项目轻松愉悦,其它语言做得到么? |
95
niubee1 2021-01-05 09:45:47 +08:00
到奶主要是生态太小了,池子浅
|
96
Cloutain 2021-01-05 09:52:52 +08:00 2
.NET 在鄙人心里一直是最好的框架
|
97
nguoidiqua 2021-01-05 09:57:47 +08:00 via Android
@Rwing
根本不是一回事好吧,别人学 Java 根本不需要了解这些,他先从 Java 语法开始就是了,学完语法就开始 Java Servlet JSP 什么的,这个时候他已经学会基础了,然后才会了解到 Spring 之类框架什么的,然后才会了解到 MVC 之类。 微软这套东西,一上来就是一堆名词,都不知道要先学什么东西,搜索半天学哪个好,要学什么语言,我记得当初可以用三种语言开发,所以又要去研究那三种语言学哪个好,当然要上网搜索看看了,到这个时候对这套东西就没啥好感了,在当年,搜索几次就会了解到 PHP Java 之类,然后就学 PHP 去了。 对于现在的我来说,是很容易搞清楚这些关系,因为我已经学过别的了,那现在搞清楚了也没啥意义了,我也不会去学了,用不上了,而且我现在看到这堆名词依然没啥好感,因为名字还在变来变去,依然感觉很乱。 |
98
lbp0200 2021-01-05 10:03:37 +08:00
然并卵
|
99
DelayNoMay 2021-01-05 10:22:52 +08:00 1
.Net 在体制内或传统单位还是很香的,不考虑 996 互联网的可以去学下.Net
|
100
hantsy 2021-01-05 10:31:41 +08:00
@wangxiaoaer
@nguoidiqua Spring 5 算个分水岭,以前的版本可以说对 Java EE 和第三方一些常见开源技术的深度封装。 Spring 5 大量删除了第三方依赖,其中包括大名鼎鼎的 Apache Velocity 模板。同时开辟了 ReactiveStreams 规范集成,加入 Functional 编程概念(比如 Router 定义可以是使得程序代替 Annotations ),并深度集成了 Kotlin,支持 Kotlin Coroutines,支持 RSocket 协议等。这些东西引进后,基于 Java EE 规范在 Spring 中地位大大降低。 https://github.com/hantsy/spring-reactive-sample |