kaka6
V2EX  ›  .NET

还有人用.Net 吗,亲测.Net5 性能飞升

  •  3
     
  •   kaka6 · Jan 4, 2021 · 33189 views
    This topic created in 2128 days ago, the information mentioned may be changed or developed.

    下午亲测了下.Net5,性能确实飞升

    性能逼近以高并发著称的 Go

    当然我的测试还比较简单,打印:hello + 当前时间

    使用云服务器:centos 7.6 2 核 4G

    所有程序都打包在 docker 中运行

    使用 abtest 测试 与其它语言对比结果如下图: image

    PS:要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错

    231 replies  •  2021-10-19 12:51:31 +08:00
    1  2  3  
    ❮ ❯
    WangMister
    WangMister
    Jan 4, 2021❤️3
    1
    www.techempower.com/benchmarks
    作 Web 服务来说,性能很强了,我一直感觉.net 太适合写业务类的 Web 服务了
    hantsy
    hantsy
    Jan 4, 2021❤️1
    2
    没做过 .net 项目。

    看了 CSharp 9 加入 record, 从 Java 15 代码翻译过去更简单了,写一个玩具。

    https://github.com/hantsy/code-challenges/tree/master/csharp

    >要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错

    安装了 .net 5 sdk, 用 rider 和 VsCode 也可以啊。
    hoyixi
    hoyixi
    Jan 4, 2021
    3
    多谢分享。

    如果再加个 Nodejs 就好了
    hantsy
    hantsy
    Jan 4, 2021
    4
    xUnit, Moq 也还不错,可以代替 Java JUnit+Mockito 。
    kaka6
    kaka6
    OP
    Jan 4, 2021
    5
    @WangMister
    .net 做为企业应用是可以的,做 hr,oa, crm 等协作管理软件问题不大
    因为企业应用并发不会太多
    之前用.Net 开发的协作管理软件为 3000+员工的企业提供服务,没什么问题
    他的稳定性是可以的,以前就是并发不行
    kiracyan
    kiracyan
    Jan 4, 2021
    6
    没有人带头很难有起色 现在用.net 的不是工业就是小厂 生态真的很差
    kaka6
    kaka6
    OP
    Jan 4, 2021
    7
    @hantsy 对对对,我表达有误
    我的意思是如果用 vs 2019 的 ide,得用 v16.8 以上版本,其它的没试过
    wysnylc
    wysnylc
    Jan 4, 2021
    8
    看好,但是还不能作为吃饭的家伙
    telung
    telung
    Jan 4, 2021
    9
    现在流行 macOS
    hantsy
    hantsy
    Jan 4, 2021
    10
    @kiracyan 欧洲应该应用蛮多的。.net 跨平台后,大厂里面跳出来首先支持 1.0 是 redhat 。
    hantsy
    hantsy
    Jan 4, 2021
    11
    @kaka6 对于我长期写 Java 的 VS 实在不习惯。Rider 才是我的菜。
    hantsy
    hantsy
    Jan 4, 2021
    12
    @telung 苹果真能折腾,M1 让多少在等待应用程序。
    liuhan907
    liuhan907
    Jan 4, 2021 via Android❤️2
    13
    我们有在用 dotnet5 开发,不过是游戏后端。挺棒的,性能瓶颈就从来不在语言这里。
    kiracyan
    kiracyan
    Jan 4, 2021
    14
    @hantsy 当然说的国内环境
    hantsy
    hantsy
    Jan 4, 2021
    15
    @liuhan907 Web 程序性能基本上都是网络,Database 的问题。
    Grapefruit
    Grapefruit
    Jan 4, 2021
    16
    目前还在用 3.1,比较期待 MAUI
    fiveelementgid
    fiveelementgid
    Jan 4, 2021 via Android
    17
    (*﹏*;)差不多得了,建议测试一下 EF Core 跨平台辅助性能,大家都不分家,肯定要用的
    性能垃圾(.net 5.1)如是说,正头大
    fiveelementgid
    fiveelementgid
    Jan 4, 2021 via Android
    18
    @hantsy 说到点上了,EF Core 用的要吐了
    liuhan907
    liuhan907
    Jan 4, 2021 via Android
    19
    @hantsy 游戏还是有一定的计算量的,不过反正堆机器。
    hantsy
    hantsy
    Jan 4, 2021
    20
    @kiracyan 国内没什么可说的,整个行业都是伸手,代表不了趋势。虽然国内软件从业人员数量很大,但影响力在国际上不如周边的一些小国。就 Java 来讲,老外几乎遗忘了 MyBatis,国内的公司居然是标配。其它国家开发人员中的 Java 比例也不会有中国这么高。
    liuhan907
    liuhan907
    Jan 4, 2021 via Android
    21
    @fiveelementgid 我们目前在用 ef,没感觉出性能有瓶颈。你们 ops 有多少遇到了瓶颈?我得看看我们是否会遇到。
    iceneet
    iceneet
    Jan 4, 2021
    22
    .net 在外国还挺火的额 在中国就太少了 不过性能还是很强的
    hantsy
    hantsy
    Jan 4, 2021❤️1
    23
    @fiveelementgid EF 一直以它的语法 API 优雅著称,操作数据库就像操作本地内存数据一样,刚开始玩 .net ,后面再试一下。Groovy 下的有新项目准备 Copy EF,之前的 GORM 我觉得已经很像了。
    simple2025
    simple2025
    Jan 4, 2021
    24
    国内还是 java, 大公司好一点的还有 golang,其他基本都凉了
    masquerader
    masquerader
    Jan 4, 2021❤️2
    25
    从.NET Framework 到.NET Core,再到现在的.NET 5 将两者融合到一起,.NET 框架以及核心的语言 C#/F#进步巨大,尤其是命令行工具和对跨平台( macOS/Linux/Windows,X86/ARM )的支持真的让人刮目相看。
    我不是以写代码为生,不过业余时间还是会撸撸码研究一些程序化交易。交易很多成熟框架都用 Python,试过几次,无奈实在懒得记动态语言的各种函数,IDE 的提示也做不到像静态语言那样精准迅速,还是决定.NET 生态上自造回测引擎的轮子。选了 F#作为主语言写交易回测框架以及 CTP 的程序化交易。个人感受是无论是写框架,写各种应用( Web/Desktop app ),还是用 REPL/Interactive 进行数据分析,都爽到起飞。
    simple2025
    simple2025
    Jan 4, 2021
    26
    abp 性能那么差吗
    hantsy
    hantsy
    Jan 4, 2021
    27
    目前 .Net 写测试有哪些工具? 目前我只试用了 xUnit, Moq 。
    ntgeralt
    ntgeralt
    Jan 4, 2021
    28
    一看到 [要用.Net5, 需要装 VS2019 V16.8 以上版本,不然会出错]
    主要是这些 win 自己不自带。难道开发个样品,还要发一堆依赖给客户

    富途牛牛和 github win 版都非常优秀,没什么奇葩依赖
    goodboy95
    goodboy95
    Jan 4, 2021
    29
    @ntgeralt 跟客户有啥关系,vs2019 是 ide,客户只要一个 runtime.
    .Net 5 稳定之后微软一般都会给一个.Net runtime 更新的,就像.Net framework 4.x 一样
    SpiritLingPub
    SpiritLingPub
    Jan 4, 2021
    30
    @fiveelementgid ef core 连接使用 mysql,感觉要吐了,各种问题。但是使用 sql server 的话,还是挺好使的,毕竟是一家的,各种做的都挺好的。个人开发或者小型企业大多数使用 mysql,导致 ef core 使用 mysql 贼难受
    quan01994
    quan01994
    Jan 4, 2021
    31
    用啊。
    TypeError
    TypeError
    Jan 4, 2021 via Android
    32
    Python 用 fastapi 好一点,不过高并发还是 go 爽

    最全的 Web benchmark 参考
    https://www.techempower.com/benchmarks
    diib
    diib
    Jan 4, 2021❤️4
    33
    针对回复说一下吧,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 跨平台。
    manami
    manami
    Jan 4, 2021
    34
    用过 go 就不想写其他语言了
    AX5N
    AX5N
    Jan 4, 2021
    35
    这样一对比,好像 python 的 flask 的效率也不差啊
    Zcyisabigman
    Zcyisabigman
    Jan 4, 2021
    36
    @manami 为啥?
    manami
    manami
    Jan 4, 2021
    38
    @Zcyisabigman 简单强大,用 go 写项目感觉不用框架都快的飞起
    Rwing
    Rwing
    Jan 4, 2021
    39
    @manami go 的语法还是很感人的。。。基础类库也缺少很多。。。泛型也没有,真的不舒服
    manami
    manami
    Jan 4, 2021
    40
    @Rwing 习惯成自然 :)
    hantsy
    hantsy
    Jan 4, 2021
    41
    kaka6
    kaka6
    OP
    Jan 4, 2021❤️1
    42
    哇,这么多人回复啊
    看来语言的争议始终有之
    不管如何,挣到钱最重要
    祝大家 2021 不管三七二十一,挣大钱
    语言不行,机子来凑,无所谓,挣钱是王道
    哈哈哈...
    jaylengao
    jaylengao
    Jan 4, 2021❤️1
    43
    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 其实相差不大
    kaka6
    kaka6
    OP
    Jan 4, 2021
    44
    @chenqh
    abp 框架加载的东西很多,性能并不太好,它就比较适合快速开发
    不过.net2.0 在正常情况下 qps 也都在 60 左右,占的初始内存还得 200M 以上
    .net5 确实比之前好很多
    forgottencoast
    forgottencoast
    Jan 4, 2021
    45
    @hantsy xUnit 是测试框架,VS 自己也有一个,还有原来的 NUnit 。
    Moq 是 Mock 工具,语法简单好用。
    这两个其实就够用了。
    forgottencoast
    forgottencoast
    Jan 4, 2021
    46
    @kaka6 用 abp 能带来哪些好处?
    salamanderMH
    salamanderMH
    Jan 4, 2021❤️1
    47
    .NET5 确实性能高。
    chinvo
    chinvo
    Jan 4, 2021❤️3
    48
    质疑性能的可以看看 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 十八条街
    chinvo
    chinvo
    Jan 4, 2021
    49
    至于 JSON 和 Plaintext 性能, Asp Net Core MVC 的性能也是力压 Spring
    chinvo
    chinvo
    Jan 4, 2021
    50
    .Net 毕竟是晚于 Java 开发出来的语言, 在设计之初就规避了很多 Java 当时已经暴露出来的问题
    Jackeriss
    Jackeriss
    Jan 4, 2021 via iPhone
    51
    tornado 换 uvloop 才快,和 go 差不多
    fiveelementgid
    fiveelementgid
    Jan 4, 2021 via Android
    52
    @liuhan907 没,学生,在搞 Linux 迁移,经常出现一些莫名奇妙的错误,性能分析的话,主要是 migration 之类的 Linq 语法生成中间层代码
    牺牲了部分性能
    @hantsy Java 也开始准备抄

    @SpiritLingPub 别说 MySQL 了....SQL server 也经常出奇怪的问题
    beginor
    beginor
    Jan 4, 2021 via Android
    53
    @SpiritLingPub 如果是使用 SQLServer 之外的其它数据库的话, 可以考虑 NHibernate, 我们一直用, 非常稳
    hantsy
    hantsy
    Jan 4, 2021
    54
    @beginor NHibernate 和 Spring.net 还在更新?
    chinvo
    chinvo
    Jan 4, 2021
    55
    @hantsy #51 确实都在更新
    fafa2npu
    fafa2npu
    Jan 4, 2021 via Android
    56
    @hantsy Nsubstitute
    timsensor
    timsensor
    Jan 4, 2021 via Android❤️1
    57
    一直都很看好.net core,linq 、ef core 、asp.net core 太强大了
    timsensor
    timsensor
    Jan 4, 2021 via Android
    58
    在国内,.net 就差头部公司来带动生态
    hantsy
    hantsy
    Jan 4, 2021
    59
    @chinvo spring-net 好久没更新了,网站还是 2012 年的。代码里面记录还最近跳到 .net 5 重新编译了一下。
    charlie21
    charlie21
    Jan 4, 2021
    62
    谁规定的快就要用阿?
    chinvo
    chinvo
    Jan 4, 2021 via iPhone
    63
    @hantsy #56 呃,我不用 spring.net ,也只是粗略看了眼 repo,看来是乌龙了
    SashaMu
    SashaMu
    Jan 4, 2021
    64
    这三年进的两家公司都是.net 转 Java
    现在新公司也有 .net 转 Java,php 转 Java 的同事
    xcstream
    xcstream
    Jan 4, 2021❤️1
    65
    主要是.net 之前的印象就是和 windows 强绑定
    darknoll
    darknoll
    Jan 4, 2021
    66
    就是性能超过 c++也没啥人用
    aaronlam
    aaronlam
    Jan 4, 2021
    67
    .net 在国内真的也就国企用的起了吧,感觉 net core 出来的还是太晚了。。
    beginor
    beginor
    Jan 4, 2021 via Android❤️1
    68
    @hantsy spring.net 不清楚。

    但是 NHibernate 确实一直在更新, 不仅支持 .Net Standard 2.0, 而且还支持实现了 Asp.Net Core 的 Identity
    beginor
    beginor
    Jan 4, 2021 via Android
    69
    @xcstream 现在 .Net 跨平台已经是官方支持的了
    beyondex
    beyondex
    Jan 4, 2021
    70
    .NET Core 每一代的基础性能都有较大提升,ASP.NET Core Web 框架性能提升很猛。
    beyondex
    beyondex
    Jan 4, 2021
    71
    @hantsy NHibernate 一直在更新,非常完善。
    UnknownSky
    UnknownSky
    Jan 4, 2021 via Android
    72
    .net ,我寫外掛還是蠻順的
    love
    love
    Jan 4, 2021
    73
    万年扶不起的框架,我最近一次使用都 10 年前了,现在还是这吊样哈哈
    推广不力框架本身的问题占最大,没比别的语言开发效率高反而更臃肿,当然这是微软风格
    baba233
    baba233
    Jan 4, 2021 via Android
    74
    php8
    php8
    Jan 4, 2021 via Android
    75
    国内在互联网以外,.net 用户可不少,只是没有跳出来说,也不像 Java 那样各种分析框架代码,分析各版本 jdk 库的实现差异
    hihanley
    hihanley
    Jan 4, 2021
    76
    @love 你都说了"最近一次使用是十年前了",是怎么得出"推广不力框架本身的问题占最大,没比别的语言开发效率高反而更臃肿"的结论的?
    forgottencoast
    forgottencoast
    Jan 4, 2021
    77
    @love 国外用的人很多很多,不知道你这个结论是怎么来的。
    bijue
    bijue
    Jan 5, 2021 via Android
    78
    @UnknownSky 还可以写外挂,不是 c++方便吗。我不是 it 人员,不懂😃
    liuhan907
    liuhan907
    Jan 5, 2021 via Android
    79
    @fiveelementgid 我们是从头开始写的 Linux 下的代码,还没遇到系统兼容性问题。ef 的话我觉得迁移代码性能差点也无所谓吧,反正是只跑一次的东西。
    fiveelementgid
    fiveelementgid
    Jan 5, 2021 via Android
    80
    @liuhan907 hhhhhh 也是,问问你们在 VS 上面开发还是直接用 Linux 跑 VSC/Rider 进行开发
    roundgis
    roundgis
    Jan 5, 2021
    81
    @forgottencoast .net 在中國也有很多應用,只不過大多不是互聯網行業,不那麼引人注目罷了
    kaedea
    kaedea
    Jan 5, 2021 via Android
    82
    MAC 上面能用 Visual Studio 吗?
    azhuge233
    azhuge233
    Jan 5, 2021 via iPhone
    83
    @kaedea Intel mac 可以,VS for Mac,M1 的不清楚
    qinfensky
    qinfensky
    Jan 5, 2021 via iPhone
    84
    和 Vert.x 比呢
    X2031
    X2031
    Jan 5, 2021❤️1
    85
    .net 用户 在此
    netnr
    netnr
    Jan 5, 2021 via Android
    86
    现在是基金会打理,不是微软(当然微软是主要贡献者)
    wangxiaoaer
    wangxiaoaer
    Jan 5, 2021
    87
    .Net/.NetCore/.Net Framework/ASP.Net/ASP.NET MVC/Web Forms/Core CLR………………

    每次想学.Net 的 web 开发都被这些搞大了头,所以真不明白为什么还有人说.Net 简单? 光特么这些概念都把人搞头大了。

    你们鄙视的 java 也比他简单啊 ,java web 就是 servlet 那一套,完了主流框架 spring 等就是对 servlet 的封装,完事儿。

    有大佬帮忙解释下吗?
    Rwing
    Rwing
    Jan 5, 2021❤️1
    88
    这个。。。。其实都一样,没区别,没有谁更简单谁更复杂之说。
    .Net/.NetCore/.Net Framework 你就拿 java/java se/java ee 来理解
    ASP.Net/ASP.NET MVC/Web Forms 你就拿 java web/spring mvc/java jsp 来理解
    CLR 就是 jvm 咯
    nguoidiqua
    nguoidiqua
    Jan 5, 2021 via Android
    89
    楼上说出了我的心声,PHP 和 ASP 对决的年代我就被 ASP ASP.NET VB.NET C# 之类搞迷糊了,不晓得学哪个才好,直接放弃,而且我很讨厌名字里面用 # 号 . 号 ++ 号什么的,看上去就不舒服。
    zhuangzhuang1988
    zhuangzhuang1988
    Jan 5, 2021 via Android
    90
    @wangxiaoaer 看现代前端开发那才叫多。。。
    wangxiaoaer
    wangxiaoaer
    Jan 5, 2021
    91
    @zhuangzhuang1988 #90 多吗?主流开发模式也就 jquery 时代-->backbone 为代表的 MVC 时代-->angular 为代表的 MVVM 时代 /以 ReactJS 技术栈为代表的 FLUX 时代,除了 flux 的模式跟之前有点变化外,大多都是换汤不换药,而 flux 的核心也就是 v=f(state)。

    至于其他的什么 webpack babel 啥的,都是工具,能跑起来就行。
    TarotVoyager
    TarotVoyager
    Jan 5, 2021
    92
    太好了又有 go 吹跳出来送,跟风吹见一个 B 一个
    wangxiaoaer
    wangxiaoaer
    Jan 5, 2021
    93
    @chouchoui #92 大哥……,你这,虽然我也非常恶心 go 的语法,但是你这是不是有点激动? golang(er)伤害你了?
    pkoukk
    pkoukk
    Jan 5, 2021❤️2
    94
    .net python node go 都写过的表示,c#绝对是世界上对开发者最友好的语言
    完善的标准库,规范统一的 api,充足的文档,配合上宇宙级 ide vs,断网开发一个项目轻松愉悦,其它语言做得到么?
    niubee1
    niubee1
    Jan 5, 2021
    95
    到奶主要是生态太小了,池子浅
    Cloutain
    Cloutain
    Jan 5, 2021❤️2
    96
    .NET 在鄙人心里一直是最好的框架
    nguoidiqua
    nguoidiqua
    Jan 5, 2021 via Android
    97
    @Rwing

    根本不是一回事好吧,别人学 Java 根本不需要了解这些,他先从 Java 语法开始就是了,学完语法就开始 Java Servlet JSP 什么的,这个时候他已经学会基础了,然后才会了解到 Spring 之类框架什么的,然后才会了解到 MVC 之类。

    微软这套东西,一上来就是一堆名词,都不知道要先学什么东西,搜索半天学哪个好,要学什么语言,我记得当初可以用三种语言开发,所以又要去研究那三种语言学哪个好,当然要上网搜索看看了,到这个时候对这套东西就没啥好感了,在当年,搜索几次就会了解到 PHP Java 之类,然后就学 PHP 去了。

    对于现在的我来说,是很容易搞清楚这些关系,因为我已经学过别的了,那现在搞清楚了也没啥意义了,我也不会去学了,用不上了,而且我现在看到这堆名词依然没啥好感,因为名字还在变来变去,依然感觉很乱。
    lbp0200
    lbp0200
    Jan 5, 2021
    98
    然并卵
    DelayNoMay
    DelayNoMay
    Jan 5, 2021❤️1
    99
    .Net 在体制内或传统单位还是很香的,不考虑 996 互联网的可以去学下.Net
    hantsy
    hantsy
    Jan 5, 2021
    100
    @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
    1  2  3  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1561 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 136ms · UTC 23:04 · PVG 07:04 · LAX 15:04 · JFK 18:04
    ♥ Do have faith in what you're doing.