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

c++写后端程序响应速度强无敌

  •  
  •   mq4079 · 2019-08-22 18:28:50 +08:00 · 20179 次点击
    这是一个创建于 1939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天用 c++重写了一段用 node 写的后端程序,相同的业务逻辑,mongodb 的 CURD 操作之类的,没用奇巧淫记没有任何优化,编译出来的程序响应速度实测比 node 快 10 倍左右,虽然 c++写起来麻烦一点点但为了性能还是 ok 的,v 友门公司用 c++写后端的多吗?

    117 条回复    2019-08-24 10:28:30 +08:00
    1  2  
    Puteulanus
        1
    Puteulanus  
       2019-08-22 18:31:18 +08:00   ❤️ 4
    你试试 golang
    augustheart
        2
    augustheart  
       2019-08-22 18:36:46 +08:00   ❤️ 2
    恭喜你重新发现了真理。
    MeteorCat
        3
    MeteorCat  
       2019-08-22 18:38:24 +08:00 via Android   ❤️ 2
    然后你用 rust 写,就会发现双倍快乐
    janxin
        4
    janxin  
       2019-08-22 18:38:30 +08:00
    你跟 node 比并发不是欺负人么...
    chinvo
        5
    chinvo  
       2019-08-22 18:40:00 +08:00 via iPhone
    有一部分项目用的 rust,主要用的 .net core,还有一部分项目是 PHP、python 的

    只能说编译型语言比解释型快是必然的
    xujif
        6
    xujif  
       2019-08-22 18:45:27 +08:00   ❤️ 14
    快 10 倍,不太可能啊。show 一下 code ?你要是 cpu 密集型 10 倍也就算了,mongodb 这样的 io 调用能快 10 倍?
    impl
        7
    impl  
       2019-08-22 18:47:37 +08:00 via Android
    node 不是用来写 web 的吗
    salamanderMH
        8
    salamanderMH  
       2019-08-22 19:24:40 +08:00 via Android
    编译的肯定快
    cest
        9
    cest  
       2019-08-22 19:34:58 +08:00   ❤️ 1
    这样 cpu/ram 厂商怎麽办? 都用真语言写,那硬体需求一下减半,要还真 optimize 下,那业界大萧条
    多找培训班的,这样业界才有希望
    learningman
        10
    learningman  
       2019-08-22 19:45:01 +08:00 via Android   ❤️ 1
    @cest 整个互联网拿汇编重构,直接跃进 20 年
    zeroDev
        11
    zeroDev  
       2019-08-22 19:47:12 +08:00 via Android
    @learningman 那怕是写不来
    wisan
        12
    wisan  
       2019-08-22 20:55:50 +08:00 via Android
    @Puteulanus golang 性能差 c++ 5 倍
    ochatokori
        13
    ochatokori  
       2019-08-22 21:05:05 +08:00 via Android
    mihoyo 就是 c++的
    cest
        14
    cest  
       2019-08-22 21:15:23 +08:00   ❤️ 1
    @zeroDev 写得来的太贵,还是堆硬件便宜,还算资产
    taogen
        15
    taogen  
       2019-08-22 21:20:08 +08:00 via Android   ❤️ 2
    PHP 天下第一
    GM
        16
    GM  
       2019-08-22 21:23:52 +08:00
    @xujif node 有 jit,理论上也不可能会十倍,差个两三倍正常。
    laminux29
        17
    laminux29  
       2019-08-22 21:58:58 +08:00   ❤️ 1
    编程语言,分为两类。一类像汇编 /C/C++,尽量与低级硬件直接打交道,运行效率最高,最省内存。但缺点是,开发效率最差,调试很不方便。

    另一个极端,是像 PHP、Python、js 这种的,写完代码文件直接可以双击运行,这类开发效率最高,调试方便,但就是运行效率最差,最浪费内存。

    以上是天平的两个极端。

    然后是其他语言,比如 Java/C#是偏向于开发效率、go 偏向于运行效率,等等。
    byteli
        18
    byteli  
       2019-08-22 22:54:19 +08:00 via Android
    cpu 密集型? io 密集的话 cpp 没有明显优势
    clino
        19
    clino  
       2019-08-22 23:12:10 +08:00 via Android
    不会 rust,但感觉 rust 应该是个更好的选择,微软都推荐了
    cz5424
        20
    cz5424  
       2019-08-22 23:27:26 +08:00 via iPhone
    @ochatokori 游戏要求高实时性
    hhyvs111
        21
    hhyvs111  
       2019-08-23 00:14:20 +08:00
    go 能写游戏服务端吗
    ppokyou
        22
    ppokyou  
       2019-08-23 03:50:11 +08:00 via iPhone
    @chinvo net core 表现咋样?正式上线吗?
    rainymorn
        23
    rainymorn  
       2019-08-23 04:35:31 +08:00   ❤️ 1
    然而,PHP 工作多啊
    takemeh
        24
    takemeh  
       2019-08-23 05:15:41 +08:00
    zuikren
        25
    zuikren  
       2019-08-23 05:54:50 +08:00 via Android
    试试 golang
    chinvo
        26
    chinvo  
       2019-08-23 08:39:04 +08:00 via iPhone   ❤️ 1
    @ppokyou #22 表现良好,正式上线

    有一些小坑,基本上官方文档都有说明和解决方案
    lihongjie0209
        27
    lihongjie0209  
       2019-08-23 08:45:40 +08:00
    io 密集型的任务差这么多, 你让前几年大火的 Python 情何以堪
    araraloren
        28
    araraloren  
       2019-08-23 09:04:33 +08:00
    个人觉得说起调试来,编译语言的工具链是最方便的
    Keyes
        29
    Keyes  
       2019-08-23 09:25:10 +08:00
    @clino 求出处
    MaiKuraki
        30
    MaiKuraki  
       2019-08-23 09:32:09 +08:00
    666
    Eds1995
        31
    Eds1995  
       2019-08-23 09:40:15 +08:00
    @MeteorCat 特别是 actix web
    clino
        32
    clino  
       2019-08-23 09:48:34 +08:00
    @Keyes https://www.oschina.net/news/108368/microsoft-is-exploring-to-use-rust-as-more-secure-code
    微软正探索将 Rust 作为 C 和 C++ 的安全替代方案
    augustheart
        33
    augustheart  
       2019-08-23 09:49:58 +08:00
    @clino 微软冗余人员多,项目组多,啥都能掺和一脚。而且那也只是微软安全组的人推荐而已。你让微软拿 rust 重写个记事本试试,保证头摇得比谁都快。
    rust 也没有吹的那么牛,先不说一大票库的版本号还在 0.x 甚至 0.0x 的阶段,rust 的优势也只是画地为牢,不安全的事都不让你做,从而避免水平不够的人写出安全代码。但它总体性能超过上 c/c++是不可能的,就算用 unsafe 生成的代码都不如 c/c++直接。而说到开发效率那就更没法谈了,rust 的开发效率怕是比 c 还差点。
    augustheart
        34
    augustheart  
       2019-08-23 09:50:42 +08:00
    @augustheart 从而避免水平不够 ->从而保证水平不够
    clino
        35
    clino  
       2019-08-23 10:02:54 +08:00
    @augustheart 我自己刚试用了 rust 开发的一款和 lucene 功能类似的 fts 引擎 tantivy,在 python 里安装和调用起来都非常方便,实测性能也很好,所以我对 rust 印象很好,认为它的开发效率应该也很不错
    fyyz
        36
    fyyz  
       2019-08-23 10:06:11 +08:00
    你说的后端是指 Web 后端吗?
    tt67wq
        37
    tt67wq  
       2019-08-23 10:09:38 +08:00
    瓶颈不都在数据库那边吗?换个语言怎么会有改善?
    augustheart
        38
    augustheart  
       2019-08-23 10:12:31 +08:00
    @clino 太繁琐了,为了安全增加了很多心智负担,编译通过都很费事。
    我个人其实挺喜欢这个语言,但是不觉得它适合快速开发。它的性能只是相对其它语言来说而已,没有 gc,静态编译这两点就是性能的保证了。但是从机器码的层次来看,至少目前相对 c++还是太啰嗦了。c++那丧心病狂的编译时间带来的优化程度别的语言还是挺难赶上的。
    谈到性能,c/c++的指针往那一站,除了汇编,别的语言都是直接抬下去的命……(不谈针对某些方面特别优化的专用语言,比如据说比 c 还快的 fortran,我没用过,听同事吹过)
    SuperMild
        39
    SuperMild  
       2019-08-23 10:15:00 +08:00
    @augustheart rust 开发效率比 C 差??恐怕全世界只有 Linus 同意你这个说法。

    你提到一点很有意思:rust 的优势是不安全的事都不让你做,从而保证水平不够的人写出安全代码。

    这正是 rust 的巨大优点,也是 rust 主要想解决的问题。运行效率 c/c++ 之下其他语言之上,但注意了,水平不够的人也能用好!达到这个高的运行效率,还能轻松确保内存安全,这就非常诱人了好吗。

    c/c++是可以运行效率高那么一丢丢,但是写起来要么提心吊胆的,要么必须水平很够(这对于程序员来说是学习成本,对于公司来说是招人成本)。
    dosmlp
        40
    dosmlp  
       2019-08-23 10:15:30 +08:00
    差 10 倍很正常,很多人其实不知道 c++性能有多强,总以为其他语言的性能已经接近 C++了,其实差的远,更不用说这还没优化
    clino
        41
    clino  
       2019-08-23 10:15:48 +08:00
    @augustheart 我理解你说的编译通过费事实际上是把 C/C++运行时容易出的问题提前在编译期间基本解决了? 如果是这样的话,应该是对开发效率的一大增强阿,C/C++指针跑飞 debug 有时候是很痛苦的.
    augustheart
        42
    augustheart  
       2019-08-23 10:16:22 +08:00
    @tt67wq 光调用函数这一点就能省下很多时间。动态语言调用库函数很慢的。
    但是是不是有这么高我就没有数据了。
    dosmlp
        43
    dosmlp  
       2019-08-23 10:17:35 +08:00
    @laminux29 编译型语言不是更好调试么,你这说反了啊
    augustheart
        44
    augustheart  
       2019-08-23 10:20:02 +08:00
    @clino 你看过那个笑话嘛,凌晨三点,办公室灯火辉煌。c++程序员正在编译程序,rust 程序员正在让程序通过编译。原文不记得了,还说了挺多其它语言的。当时看了乐坏了。
    那个所有权系统太难缠了。
    no1xsyzy
        45
    no1xsyzy  
       2019-08-23 10:20:06 +08:00
    @laminux29 一边是机器语言字节码一边是 lisp 就完事了,python js 也 d 在没做到极致。
    tt67wq
        46
    tt67wq  
       2019-08-23 10:20:50 +08:00
    @augustheart #42 就算快 10 倍,跟数据库 IO 比起来,不是一个量级的,一次读数据库,有网络 IO,读内存,慢点的还要读磁盘,你 c++这些都是没法优化的,动态的函数调用再慢也不会有这么大影响吧
    augustheart
        47
    augustheart  
       2019-08-23 10:23:23 +08:00
    @tt67wq 是的,所以我也说了是不是这么我高没有数据。
    而且楼主也没说他具体在各个阶段上到底花时间多少,如果数据库上花的时间少,调用的消耗不就突出了呗。
    tt67wq
        48
    tt67wq  
       2019-08-23 10:24:48 +08:00
    @augustheart #47 如果是 CPU 密集的确实没法比,10 倍都是谦虚了
    no1xsyzy
        49
    no1xsyzy  
       2019-08-23 10:28:41 +08:00
    @augustheart 运行效率死吹 C/C++ 的可别了吧
    “另外一些 函数式语言也能生成高效的代码,比如 OCaml。在一次程序语言暑期班上,Cornell 的 Robert Constable 教授讲了一个故事,说是他们用 OCaml 重新实现了一个系统,结果发现 OCaml 的实现比原来的 C 语言实现快了 50 倍。经过 C 语言的那个小组对算法多次的优化,OCaml 的版本还是快好几倍。这里的原因其实在于两方面。第一是因为函数式语言把程序员从底层细节中解脱出来,让他们能够迅速的实现和修改自己的想法,所以他们能 够迅速的找到更好的算法。第二是因为 OCaml 有高效的编译器实现,使得它能生成很好的代码。”

    精通 Rust 和熟练使用 C 哪个写出来的运行快? C 写了个运行时判断是否需要回收的(自行实现引用计数),当然不如 Rust 写的编译时决定的。
    u823tg
        50
    u823tg  
       2019-08-23 11:06:45 +08:00
    @augustheart 写的多了,写顺了效率还不错。
    augustheart
        51
    augustheart  
       2019-08-23 11:08:00 +08:00   ❤️ 1
    @no1xsyzy 特例就别拿出来了吧。python 跑得比 c 快的例子又不是不存在。无论多高效的编译器,最终它还是要变成机器码在 cpu 上跑的。生成的机器码的性能,我可以把话说死了,上限就在 c 这块。
    至于你后面那段,我就先不纠结你这个精通与熟练的语言把戏了。c 原教旨主义的那帮人才不用引用计数器这种低效玩意呢。那是 c++才爱干的事。不能在自己脑瓜子里面想清楚资源的所有生命周期的也敢自称熟练使用 c ?
    augustheart
        52
    augustheart  
       2019-08-23 11:10:29 +08:00   ❤️ 1
    @u823tg 写顺了那就真的基本可以说精通 rust 了。容我先膜拜一下。我学 rust 已经从入门到放弃两次了,眼看第三次要接近了……
    u823tg
        53
    u823tg  
       2019-08-23 11:12:53 +08:00
    @augustheart 两次放弃,你这是光学不练吧。
    augustheart
        54
    augustheart  
       2019-08-23 11:13:53 +08:00
    @SuperMild 其实你的说法我很赞同。我虽然每天写的是 c++,但是其实我真的不是 c/c++吹,只是想描述清楚一个真正的 c/c++而已……
    augustheart
        55
    augustheart  
       2019-08-23 11:16:05 +08:00
    @u823tg 毕竟只是晚上在家学学,写写 helloworld,没有动力……
    u823tg
        56
    u823tg  
       2019-08-23 11:18:09 +08:00
    @augustheart 那怪不得,没动力就别学了,浪费时间学完还忘了, 等你啥时候真的想用 rust 做点东西再学吧
    dog82
        57
    dog82  
       2019-08-23 11:20:09 +08:00
    GO+mysql,10 万+用户的 App,生产服是阿里云 4 核心 4G 内存单台服务器,这么斋的服务器还没我的手机强劲呢,但是没用户抱怨慢
    flyingghost
        58
    flyingghost  
       2019-08-23 11:39:18 +08:00
    @augustheart #44,对你的笑话很感兴趣。还有更多吗?
    xujif
        59
    xujif  
       2019-08-23 11:45:43 +08:00
    @takemeh 只是 ui 比较快,http 响应几十毫秒完全是正常的水平( laravel 除外)
    augustheart
        60
    augustheart  
       2019-08-23 12:08:48 +08:00   ❤️ 11
    @flyingghost 因为记不清楚了,所以上谷歌搜了一下,全文是这个:
    凌晨三点的办公室灯火通明,
    Ruby 开发者在解决性能问题,
    Python 开发者在拿游标卡尺量缩进,
    JavaScript 开发者在 npm 上找包,
    C 开发者在解决内存泄漏,
    C++ 开发者在编译,
    Java 开发者在各种 Factory,
    Rust 开发者在研究怎么通过编译,
    Go 开发者正在 if err != nil,
    王垠还没选好用什么语言。
    xpresslink
        61
    xpresslink  
       2019-08-23 12:10:23 +08:00
    楼主的这例子没有什么说服力。
    如果真的是全业务链调用,mongodb 的 IO 绝对占大头,性能极致也是 ms 级别的。
    如果性能差出 10 倍来,肯定是以前 node 的代码太菜了。
    zchlwj
        62
    zchlwj  
       2019-08-23 12:12:17 +08:00
    @wisan #12 原文:“@Puteulanus golang 性能差 c++ 5 倍”
    ======
    回复:有测试记录吗?
    lidfather
        63
    lidfather  
       2019-08-23 12:12:54 +08:00 via Android
    各位,性能不重要,不差那一点钱,能产生价值才是正道,不要浪费时间搞什么 cpp rust Haskell,过来人一点建议。
    Raymon111111
        64
    Raymon111111  
       2019-08-23 12:17:23 +08:00
    crud 主要耗时都在和数据库交互上, 和语言没什么关系

    你要不再看看耗时监控?
    reus
        65
    reus  
       2019-08-23 12:18:15 +08:00
    @lidfather 各位,A 不重要,不差那一点钱,能 B 才是正道,不要浪费时间搞什么 C、D、E,过来人一点建议。

    ABCDE 随便填,都能成立的废话。
    no1xsyzy
        66
    no1xsyzy  
       2019-08-23 12:19:48 +08:00
    @augustheart
    特例不能用来当正例,但可以用来当反例,黑天鹅只要一只。

    不能排除业务本身要求引用计数的情况,比如写解释器。你要决心永不释放堆内存条,学 nginx javascript 运行一次结束直接删实例的,当我没说,这写的状态隔离比 erlang 还强。
    lincanbin
        67
    lincanbin  
       2019-08-23 12:20:45 +08:00 via Android
    挺多用 C++的后台开发的,但是开发效率真的不太行。
    StarkWhite
        68
    StarkWhite  
       2019-08-23 12:27:24 +08:00
    jevonszmx
        69
    jevonszmx  
       2019-08-23 12:27:52 +08:00
    @learningman 找汇编人才,比起 java,估计招人效率降低不止 10 倍
    augustheart
        70
    augustheart  
       2019-08-23 12:30:14 +08:00
    @no1xsyzy 精确控制资源本来就是 c 原教旨主义者的正常状态。就这么说吧,敢拿纯 c 写复杂业务还能写好的家伙哪个都不简单。
    所以为啥写 c/c++的人越来越少了?还不就是这一堆东西太费脑。
    liuminghao233
        71
    liuminghao233  
       2019-08-23 12:35:22 +08:00 via iPhone
    你查个库那条 tcp 连接上花的时间
    不是语言可以优化的
    augustheart
        72
    augustheart  
       2019-08-23 12:37:48 +08:00
    @u823tg 我学 rust 这回事本身就是不带功利心的学,每次放弃都比以前多了解了点语言特性。所以无所谓啦
    no1xsyzy
        73
    no1xsyzy  
       2019-08-23 12:42:30 +08:00
    @augustheart 按图灵完备的不可静态分析停机肯定存在不用引用计数是无法完成的功能。
    构造一个图灵机,模拟一个 C 语言程序并在由输入指定的某一资源被释放时停机。不真正让这个图灵机跑起来是无法判断是否会停机的,所以肯定存在功能需要运行时决定资源的释放。
    mq4079
        74
    mq4079  
    OP
       2019-08-23 12:44:25 +08:00
    代码就不 show 了公司的业务,此次测试 node 端跑在 windows 本地,数据库驱动用的 mongoose,c++端跑在 ubuntu 虚拟机里,数据库用 mongo 官方的 mongo c++ drive c++11 版本的驱动,web 框架用的 cinatra,国内 purecpp 社区开源的 web 框架,在浏览器里看每次请求的响应时间就数据库的 io 操作上看,c++就是快 8~10 的样子,如果非要强行说 io 操作时间差不多,那就亲测一下就知道了
    mq4079
        75
    mq4079  
    OP
       2019-08-23 13:05:42 +08:00
    另外说一下 node 和 C++我都用,一个快速开发一个性能好,语言没有孰优孰劣,非要争论下去这就不是一个技术问题而是程序员的政治问题了,我发这贴的目的是想了解下 C++写后台的公司多不多
    ClaudeRay
        76
    ClaudeRay  
       2019-08-23 13:07:26 +08:00
    @mq4079 实现和运行环境都差不少,这样得出的数据作为结论不合适吧,单说 mongoose 和 node-mongodb-native 官方驱动的性能差距就非常之大了。
    augustheart
        77
    augustheart  
       2019-08-23 13:08:35 +08:00
    @no1xsyzy 语言需要计数器和使用计数器来管理资源不是一回事吧。咱们好像聊差了,不是一个方向了……
    VDimos
        78
    VDimos  
       2019-08-23 13:09:15 +08:00 via Android
    用 rust 写,用的 rocket,性能屌屌的
    Hanggi
        79
    Hanggi  
       2019-08-23 13:09:32 +08:00
    那是因为你试了一下,然后感觉性能好强啊,但是等你到写复杂的功能逻辑的时候你就会知道,node 真香。

    C++ 当然也都可以写,但是更好的选择是 Java 或者 Golang。
    xujif
        80
    xujif  
       2019-08-23 13:10:07 +08:00
    @mq4079 不 show code 来个数据? node 要几百 ms ?
    flyxl
        81
    flyxl  
       2019-08-23 13:11:00 +08:00 via Android   ❤️ 1
    @mq4079 从浏览器请求响应时间得出数据库 io 效率 10 倍差距,这个结论不专业呀,一个 http 请求经过那么多的处理,比如 json 编解码,比如 http 响应解析,还有业务逻辑处理等等,这中间的任何一步都可能成为性能瓶颈啊
    killerv
        82
    killerv  
       2019-08-23 13:12:45 +08:00
    @dosmlp 没有业务场景,单纯对比语言的快慢这个测试肯定是差距很大的,但是真正的业务,瓶颈一般都在 io,比如说一次请求,数据库查询耗时 20ms,A 语言处理比 B 语言快 10ns,肯定有提升,但是并不明显。
    augustheart
        83
    augustheart  
       2019-08-23 13:14:34 +08:00
    所以破案了?
    fakeshadow
        84
    fakeshadow  
       2019-08-23 13:23:33 +08:00
    同推荐楼主试试 rust
    nigelvon
        85
    nigelvon  
       2019-08-23 13:45:44 +08:00
    如果不是密集运算型不可能差这么多的,听你的描述仅仅是从 mongodb 获取数据的,别说 10 倍了,我觉得差两倍都不正常。不如把代码贴出来看看。
    no1xsyzy
        86
    no1xsyzy  
       2019-08-23 14:28:56 +08:00
    @mq4079 那你测试有没有用 time ?看一下 system 时间和 user 时间?
    no1xsyzy
        87
    no1xsyzy  
       2019-08-23 14:33:58 +08:00
    @augustheart 确实远了,不过如果不把程序员当控制变量而当随机变量的话,其实写出来的代码孰快孰慢还不一定。
    我写惯了高级语言的函数式计算结果换 C 写了个非常低效率的算法……
    fox1955
        88
    fox1955  
       2019-08-23 14:44:24 +08:00
    mongoose 构造 schema 对象是耗时操作,破案还需 lz show code.
    spotfg
        89
    spotfg  
       2019-08-23 14:59:15 +08:00
    @flyingghost
    凌晨三点的办公室灯火通明,
    Ruby 开发者在解决性能问题,
    Python 开发者在拿游标卡尺量缩进,
    JavaScript 开发者在 npm 上找包,
    C 开发者在解决内存泄漏,
    C++ 开发者在编译,
    Java 开发者在各种 Factory,
    Rust 开发者在研究怎么通过编译,
    Go 开发者正在 if err != nil,

    原文
    gtlions
        90
    gtlions  
       2019-08-23 15:03:00 +08:00 via iPhone
    @augustheart
    Python 程序正在寻找 Bug
    Go 程序员正在拼写_,_=
    danc
        91
    danc  
       2019-08-23 15:13:51 +08:00
    所以嘛,@augustheart 大佬,Rust 究竟是有多难,让你两次入门到放弃。我当初学 Rust 好像挺快的啊。
    ipwx
        92
    ipwx  
       2019-08-23 15:20:21 +08:00
    哎,楼上一堆喷 C++ IO 不行的,怕不是没见过优化到极致的 C++ 程序。

    一切别的语言能用的技术,C++ 都能用,只不过要花更多的编码时间罢了。
    ====

    而且另一方面,SQL 数据库的瓶颈一般不在客户端的 IO,在于数据库服务器本身。
    augustheart
        93
    augustheart  
       2019-08-23 15:21:13 +08:00
    @danc 我说了啊,没有动力。本来就是玩儿的。
    这破库居然要 nightly,mlgb,不玩了。
    调个 win api,这么麻烦?滚蛋,直接上 c++
    我以前自己拿 c++写了个简陋的音乐播放器,某晚突然心血来潮想 rust 重写,写了个 winmain,wrnmd,这么啰嗦?不干了……
    然后……
    ipwx
        94
    ipwx  
       2019-08-23 15:21:49 +08:00
    C++ IO,优化到极致,实现方式据我所知就有两种:

    1、libevent (epoll)。2、boost::asio。

    而后者是 Node.js 回调地狱的 C++ 版。你说,技术手段都一致了,C++ 更快有什么奇怪的。
    blless
        95
    blless  
       2019-08-23 15:23:11 +08:00 via Android
    go 我觉得有 c c++60%-80%的性能 甚至还内置了汇编
    60%-80%的 python 开发效率,已经很爽了
    rust 嘛…看完教程的功夫我得 go web 已经写完了
    augustheart
        96
    augustheart  
       2019-08-23 15:26:18 +08:00
    @ipwx 没人喷 c++的 io 不行吧……
    b00tyhunt3r
        97
    b00tyhunt3r  
       2019-08-23 15:55:53 +08:00 via iPhone
    @no1xsyzy :
    “另外一些 函数式语言也能生成高效的代码,比如 OCaml。在一次程序语言暑期班上,Cornell 的 Robert Constable 教授讲了一个故事,说是他们用 OCaml 重新实现了一个系统,结果发现 OCaml 的实现比原来的 C 语言实现快了 50 倍。经过 C 语言的那个小组对算法多次的优化,OCaml 的版本还是快好几倍。这里的原因其实在于两方面。第一是因为函数式语言把程序员从底层细节中解脱出来,让他们能够迅速的实现和修改自己的想法,所以他们能 够迅速的找到更好的算法。第二是因为 OCaml 有高效的编译器实现,使得它能生成很好的代码。”

    ===========
    这段怎么查不到英文原文
    no1xsyzy
        98
    no1xsyzy  
       2019-08-23 15:59:43 +08:00
    @b00tyhunt3r 因为是中文使用者写的博客,原文又删贴了,地址没存不然还可以去 Web Archive 找到,现在就是找起来有点麻烦
    dosmlp
        99
    dosmlp  
       2019-08-23 16:12:58 +08:00
    @ipwx linux 上 epoll 不是极致,dpdk 才是,Windows 的 iocp 也不是极致而是 rio
    磁盘 io 一般也会用内存映射避免内核中进行内存拷贝
    b00tyhunt3r
        100
    b00tyhunt3r  
       2019-08-23 16:28:18 +08:00 via iPhone
    @no1xsyzy
    用关键词查谷歌 Cornell Robert Constable Ocaml 也没找到
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.