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

2019-08-22 18:28:50 +08:00
 mq4079

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

20133 次点击
所在节点    C++
117 条回复
clino
2019-08-23 10:15:48 +08:00
@augustheart 我理解你说的编译通过费事实际上是把 C/C++运行时容易出的问题提前在编译期间基本解决了? 如果是这样的话,应该是对开发效率的一大增强阿,C/C++指针跑飞 debug 有时候是很痛苦的.
augustheart
2019-08-23 10:16:22 +08:00
@tt67wq 光调用函数这一点就能省下很多时间。动态语言调用库函数很慢的。
但是是不是有这么高我就没有数据了。
dosmlp
2019-08-23 10:17:35 +08:00
@laminux29 编译型语言不是更好调试么,你这说反了啊
augustheart
2019-08-23 10:20:02 +08:00
@clino 你看过那个笑话嘛,凌晨三点,办公室灯火辉煌。c++程序员正在编译程序,rust 程序员正在让程序通过编译。原文不记得了,还说了挺多其它语言的。当时看了乐坏了。
那个所有权系统太难缠了。
no1xsyzy
2019-08-23 10:20:06 +08:00
@laminux29 一边是机器语言字节码一边是 lisp 就完事了,python js 也 d 在没做到极致。
tt67wq
2019-08-23 10:20:50 +08:00
@augustheart #42 就算快 10 倍,跟数据库 IO 比起来,不是一个量级的,一次读数据库,有网络 IO,读内存,慢点的还要读磁盘,你 c++这些都是没法优化的,动态的函数调用再慢也不会有这么大影响吧
augustheart
2019-08-23 10:23:23 +08:00
@tt67wq 是的,所以我也说了是不是这么我高没有数据。
而且楼主也没说他具体在各个阶段上到底花时间多少,如果数据库上花的时间少,调用的消耗不就突出了呗。
tt67wq
2019-08-23 10:24:48 +08:00
@augustheart #47 如果是 CPU 密集的确实没法比,10 倍都是谦虚了
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
2019-08-23 11:06:45 +08:00
@augustheart 写的多了,写顺了效率还不错。
augustheart
2019-08-23 11:08:00 +08:00
@no1xsyzy 特例就别拿出来了吧。python 跑得比 c 快的例子又不是不存在。无论多高效的编译器,最终它还是要变成机器码在 cpu 上跑的。生成的机器码的性能,我可以把话说死了,上限就在 c 这块。
至于你后面那段,我就先不纠结你这个精通与熟练的语言把戏了。c 原教旨主义的那帮人才不用引用计数器这种低效玩意呢。那是 c++才爱干的事。不能在自己脑瓜子里面想清楚资源的所有生命周期的也敢自称熟练使用 c ?
augustheart
2019-08-23 11:10:29 +08:00
@u823tg 写顺了那就真的基本可以说精通 rust 了。容我先膜拜一下。我学 rust 已经从入门到放弃两次了,眼看第三次要接近了……
u823tg
2019-08-23 11:12:53 +08:00
@augustheart 两次放弃,你这是光学不练吧。
augustheart
2019-08-23 11:13:53 +08:00
@SuperMild 其实你的说法我很赞同。我虽然每天写的是 c++,但是其实我真的不是 c/c++吹,只是想描述清楚一个真正的 c/c++而已……
augustheart
2019-08-23 11:16:05 +08:00
@u823tg 毕竟只是晚上在家学学,写写 helloworld,没有动力……
u823tg
2019-08-23 11:18:09 +08:00
@augustheart 那怪不得,没动力就别学了,浪费时间学完还忘了, 等你啥时候真的想用 rust 做点东西再学吧
dog82
2019-08-23 11:20:09 +08:00
GO+mysql,10 万+用户的 App,生产服是阿里云 4 核心 4G 内存单台服务器,这么斋的服务器还没我的手机强劲呢,但是没用户抱怨慢
flyingghost
2019-08-23 11:39:18 +08:00
@augustheart #44,对你的笑话很感兴趣。还有更多吗?
xujif
2019-08-23 11:45:43 +08:00
@takemeh 只是 ui 比较快,http 响应几十毫秒完全是正常的水平( laravel 除外)
augustheart
2019-08-23 12:08:48 +08:00
@flyingghost 因为记不清楚了,所以上谷歌搜了一下,全文是这个:
凌晨三点的办公室灯火通明,
Ruby 开发者在解决性能问题,
Python 开发者在拿游标卡尺量缩进,
JavaScript 开发者在 npm 上找包,
C 开发者在解决内存泄漏,
C++ 开发者在编译,
Java 开发者在各种 Factory,
Rust 开发者在研究怎么通过编译,
Go 开发者正在 if err != nil,
王垠还没选好用什么语言。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/594287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX