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

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

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

20344 次点击
所在节点    C++
117 条回复
xpresslink
2019-08-23 12:10:23 +08:00
楼主的这例子没有什么说服力。
如果真的是全业务链调用,mongodb 的 IO 绝对占大头,性能极致也是 ms 级别的。
如果性能差出 10 倍来,肯定是以前 node 的代码太菜了。
zchlwj
2019-08-23 12:12:17 +08:00
@wisan #12 原文:“@Puteulanus golang 性能差 c++ 5 倍”
======
回复:有测试记录吗?
lidfather
2019-08-23 12:12:54 +08:00
各位,性能不重要,不差那一点钱,能产生价值才是正道,不要浪费时间搞什么 cpp rust Haskell,过来人一点建议。
Raymon111111
2019-08-23 12:17:23 +08:00
crud 主要耗时都在和数据库交互上, 和语言没什么关系

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

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

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

C++ 当然也都可以写,但是更好的选择是 Java 或者 Golang。
xujif
2019-08-23 13:10:07 +08:00
@mq4079 不 show code 来个数据? node 要几百 ms ?

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

https://tanronggui.xyz/t/594287

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

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

© 2021 V2EX