V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kaka6
V2EX  ›  .NET

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

  •  3
     
  •   kaka6 · 334 天前 · 23897 次点击
    这是一个创建于 334 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    231 条回复    2021-10-19 12:51:31 +08:00
    1  2  3  
    WangMister
        1
    WangMister  
       334 天前   ❤️ 3
    www.techempower.com/benchmarks
    作 Web 服务来说,性能很强了,我一直感觉.net 太适合写业务类的 Web 服务了
    hantsy
        2
    hantsy  
       334 天前   ❤️ 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 也可以啊。
    hoyixi
        3
    hoyixi  
       334 天前
    多谢分享。

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

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

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

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

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

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

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

    有大佬帮忙解释下吗?
    Rwing
        88
    Rwing  
       333 天前   ❤️ 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 咯
    nguoidiqua
        89
    nguoidiqua  
       333 天前 via Android
    楼上说出了我的心声,PHP 和 ASP 对决的年代我就被 ASP ASP.NET VB.NET C# 之类搞迷糊了,不晓得学哪个才好,直接放弃,而且我很讨厌名字里面用 # 号 . 号 ++ 号什么的,看上去就不舒服。
    zhuangzhuang1988
        90
    zhuangzhuang1988  
       333 天前 via Android
    @wangxiaoaer 看现代前端开发那才叫多。。。
    wangxiaoaer
        91
    wangxiaoaer  
       333 天前
    @zhuangzhuang1988 #90 多吗?主流开发模式也就 jquery 时代-->backbone 为代表的 MVC 时代-->angular 为代表的 MVVM 时代 /以 ReactJS 技术栈为代表的 FLUX 时代,除了 flux 的模式跟之前有点变化外,大多都是换汤不换药,而 flux 的核心也就是 v=f(state)。

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

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

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

    对于现在的我来说,是很容易搞清楚这些关系,因为我已经学过别的了,那现在搞清楚了也没啥意义了,我也不会去学了,用不上了,而且我现在看到这堆名词依然没啥好感,因为名字还在变来变去,依然感觉很乱。
    lbp0200
        98
    lbp0200  
       333 天前
    然并卵
    DelayNoMay
        99
    DelayNoMay  
       333 天前   ❤️ 1
    .Net 在体制内或传统单位还是很香的,不考虑 996 互联网的可以去学下.Net
    hantsy
        100
    hantsy  
       333 天前
    @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  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2371 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    ♥ Do have faith in what you're doing.