mq4079
V2EX  ›  C++

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

  •  
  •   mq4079 · Aug 22, 2019 · 22032 views
    This topic created in 2490 days ago, the information mentioned may be changed or developed.

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

    117 replies    2019-08-24 10:28:30 +08:00
    1  2  
    augustheart
        101
    augustheart  
       Aug 23, 2019
    @b00tyhunt3r 关于 ocaml 比 c 快的说法我倒是看到过。不过不是他这个说法,是说有比 c 更快的传说。
    但也就像我说的那样,就算 python 都有比 c 快的个例,这种没有参考价值。而且,我看到更多的评测结果都是 c 比 ocaml 快,最多也是不相上下( g++ vs ocaml)。如果差几倍,还是“多次优化”,基本可以断定是用调试版跑出来的结果。
    CantSee
        102
    CantSee  
       Aug 23, 2019
    毕竟没有虚拟化平台
    jy04149886
        103
    jy04149886  
       Aug 23, 2019
    上代码吧,学习一下
    no1xsyzy
        104
    no1xsyzy  
       Aug 23, 2019
    @b00tyhunt3r 原文已删的话谷歌也没用吧……
    而且我说了中文使用者,全英文关键词 google 会傻的只找全英文的
    而且中文博客+cornell 你差不多就该知道是谁的文章了
    secondwtq
        105
    secondwtq  
       Aug 23, 2019 via iPad
    我只记得这个 http://www.ffconsultancy.com/languages/ray_tracer/comparison.html
    然而这个在 HN 上被喷成狗了

    C/C++ 的独特优势是性能**上限**高,意思是假定使用的是未经定制的编译器,同时假定有一个水平无限高的程序员(或者有无限多只猴子在”写”同一个程序),用 C/C++ (以及其常见扩展)写的程序的运行时性能的最大值是其他语言比不上的

    这个条件很值得玩味

    当然汇编是个例外,不过这里即使排除汇编,以及 C/C++ 的內联汇编扩展,C/C++ (以及其常见扩展)对硬件和内存的精确控制还是可以使其在运行时性能上限这一方面把其他语言轰成渣
    secondwtq
        106
    secondwtq  
       Aug 23, 2019 via iPad
    OCaml 的编译器实现确实很高效,不过这个“高效”更适合用来指代该编译器本身,而不是编译器生成的代码。这么说把,OCaml 的编译器的**编译速度**,和 C++/Haskell 的编译器相比是两个极端

    不过鉴于 OCaml 的编译器是 OCaml 写的,所以你说 OCaml 运行时性能高效,也还凑合,不过和 C/C++ 比性能上限还是算了吧

    个人见解,OCaml 编译器本身能做的如此高效,一个重要原因是坚持了四项,啊不四字基本原则,即 KISS。另外 OCaml 编译器对所生成代码进行的优化,相比于各大 C/C++ 编译器来说是很少的,flambda 什么的也是最近才开始搞(效果貌似也没好到哪去)。对于 C/C++ 编译器来说,如果你把优化开满,编译是很耗时的

    某中文博主的文章里面应该也有一部分这个意思,但是他吹过头了
    b00tyhunt3r
        107
    b00tyhunt3r  
       Aug 23, 2019 via iPad
    @no1xsyzy 比 c 快 50 倍这个听着太魔幻了。。。汇编能做到吗
    怕不是特殊硬件条件下的极端特例
    某中文博主不是一直是函数式的 fanboy 吗,只是想确认下中文是不是断章取义了
    luozic
        108
    luozic  
       Aug 23, 2019 via iPhone
    比 c 实现某功能快 50 倍?是运行快,还是写代码花的时间? ada 编译器 /fortran 编译结果倒是在很多时候比 C 快,但是现在没多少人愿意用了,ocaml 比 c 快,怕不是在通用处理器上吧,
    sosilver
        109
    sosilver  
       Aug 23, 2019 via Android
    @augustheart nightly 不是啥可怕的东西,Libra 都在用 nightly
    hronro
        110
    hronro  
       Aug 23, 2019
    @VDimos #78 Rocket 的性能和 Node.js 差不了多少,就别说了
    secondwtq
        111
    secondwtq  
       Aug 23, 2019 via iPad
    另外我觉得 OCaml 还是低调一点 ... 一粉顶十黑的客观真理已经在这几楼开始发挥作用了,我可不想哪天 OCaml 变成人人喊打的东西

    说起来,我之前用 PHP 重新实现了一个系统,结果发现 PHP 的实现比原来的 C 语言实现快了 50 倍。经过 C 语言的那个小组对算法多次的优化,PHP 的版本还是快好几倍。(转移话题
    Cbdy
        112
    Cbdy  
       Aug 23, 2019 via Android
    这种应用瓶颈不是卡在 IO 吗?
    cabing
        113
    cabing  
       Aug 23, 2019
    脱离了业务和开发效率说速度都不太实际。
    version
        114
    version  
       Aug 23, 2019 via iPhone
    只在乎改需求的语言成本,其它多核处理器来处理速度问题,一半简单接口,人员成本比机器高,还抱怨 996
    b00tyhunt3r
        115
    b00tyhunt3r  
       Aug 24, 2019 via iPad
    @secondwtq 哇 图形学大佬?
    agagega
        116
    agagega  
       Aug 24, 2019 via iPhone
    @secondwtq
    印象里 ocamlc 和 ocamlopt 编译速度差不少啊,你说的怕不是 ocamlc
    halk
        117
    halk  
       Aug 24, 2019
    @mq4079 都放到同样的 OS 环境测试一下,才有说服力
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3014 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 14:19 · PVG 22:19 · LAX 07:19 · JFK 10:19
    ♥ Do have faith in what you're doing.