网易首页 > 网易号 > 正文 申请入驻

编写一个 “Hello World” 的 Web 服务器,Go、Node.js、Nim 和 Bun 谁更快?

0
分享至

【CSDN 编者按】作者通过简单内容分别测试Go、Node.js、Nim、Bun服务器的性能状态,一起来学习下!

原文链接:https://lemire.me/blog/2023/10/07/web-server-hello-world-benchmark-go-vs-node-js-vs-nim-vs-bun/

未经允许,禁止转载!

作者 | Daniel Lemire 译者 | 弯月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

编写小型Web应用程序有许多流行的框架。Go和JavaScript(Node.js)是最流行的选择。据说,Netflix 选择了 Node.js,而 Uber 为了更好的性能从 Node.js 迁移到了 Go 上。还有一些不那么流行的选择,比如 Nim。

详细分析它们的性能很难。不过使用这些框架编写一个非常小的Web应用程序,能看出明显的区别吗?最小的应用程序可以作为基准参考,因为更复杂的程序通常会更慢。

我们来试试看。我需要一个相当于“hello world”的Web服务器。我不想要任何复杂的东西,一切保持简单就好。

最简单的Go服务器如下所示:

最基本的JavaScript(Node.js)服务器如下所示:

这段程序在Bun等其他运行时中可以直接运行,但为了获得Bun运行时的最佳性能,你需要编写Bun的专用代码:

Nim提供了一种方便的方法来实现同样的结果:

另一种很有趣的方法是在Node下使用uWebSockets.js:

也可以使用C++和lithium库:

我做了一次性能评测。程序跑在一台强大的IceLake架构的64核服务器上。通常,这种大型服务器的时钟频率比较低(基频2GHz,最高能到3.2GHz)。性能测试采用了一个简单的bombardier命令:

bombardier -c 10 http://localhost:3000/simple

上面的并发连接数可以一直加到1000(-c 1000)。一开始时我用了autocannon,但发现不太好用。

测试结果表明,在这个小型应用程序上,Nim的表现非常好。

系统

每秒请求数(10连接)

每秒请求数(1000连接)

Nim 2.0 和 httpbeast

315,000 +/- 18,000

350,000 +/- 60,000

GCC12 (C++) + lithium

190,000 +/- 60,000

385,000 +/- 80,000

Go 1.19

95,000 +/- 30,000

250,000 +/- 45,000

Node.js 20 和uWebSockets.js

100,000 +/- 25,000

100,000 +/- 35,000

Bun 1.04

80,000 +/- 15,000

65,000 +/- 20,000

Node.js 20 (JavaScript)

45,000 +/- 7,000

41,000 +/- 10,000

Bun + fastify

40,000 +/- 6,000

35,000 +/- 9,000

* Bun的作者Jarred Sumner在X上说,bun中的fastify还不够快,但Bun.serve()比node:http快两倍以上。

我的Web服务器的任务非常小,所以只是一种特殊情况。我也没有进行任何配置,这只是“原始”的性能。何况,这台服务器也比通常程序员们使用的服务器更强大。

这个结果有很大的干扰,所以你不应该盲从这些数字。建议你自己跑一次性能测试。

我还看了一些其他的文章,大家都认为Go更快:

  • Http Server Performance: NodeJS vs. Go(https://betterprogramming.pub/http-server-performance-nodejs-vs-go-397751e8d275) 一文认为Go比Node.js快34%。他们的测试更贴近实际情况,所以更真实一些。

  • Server-side I/O Performance: Node vs. PHP vs. Java vs. Go (https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go)一文认为Go比Node.js和Java容易扩展得多,而PHP排在最后。在压力测试中,他们发现Java和Node.js平手,而Go的速度是它们的两倍。

  • Performance Benchmarking: Bun vs. C# vs. Go vs. Node.js vs. Python(https://www.wwt.com/blog/performance-benchmarking-bun-vs-c-vs-go-vs-nodejs-vs-python) 一文认为Bun和Go是赢家,而Node.js只有大概一半的速度。C#的性能尚可,而Python最慢。

很想看看C、Rust和Zig在这个测试中的结果。

关于C++实现,我一开始遇到了许多问题。事实证明使用Lithium非常简单。最困难的地方就是确保你的系统上装了OpenSSL和Boost。我的解决方案和其他方案同样简单。Lithium的作者非常善解人意地给出了怎样在docker容器中运行Lithium服务器。这就意味着你不需要在系统上安装库。在docker容器中运行服务器非常合理,但有性能的额外开销,所以我在测试中没有使用。

在撰写本文时,我很开心第一次编译Nim语言的软件。不得不说,Nim给我留下了很好的印象。作者声称,Nim的创意来自Python。它的确很像Python。稍后我会重新看看Nim。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
iPhone17ProMax跌破首发价,黄牛今年不敢疯狂了!

iPhone17ProMax跌破首发价,黄牛今年不敢疯狂了!

搞机小帝
2025-09-14 00:02:36
股市永不坑人的“盘口语言”,真正读懂,你就是股市真正的高手!

股市永不坑人的“盘口语言”,真正读懂,你就是股市真正的高手!

股经纵横谈
2025-09-14 20:06:31
西贝上海中心门店客流量不降反增,员工称“今天使用的西兰花是8月14日的”

西贝上海中心门店客流量不降反增,员工称“今天使用的西兰花是8月14日的”

第一财经资讯
2025-09-14 14:27:10
台湾演员艾悠日本下海!有东西啊!

台湾演员艾悠日本下海!有东西啊!

贵圈真乱
2025-09-08 10:32:06
自2019赛季以来,津门虎首次连续三个中超主场保持零封

自2019赛季以来,津门虎首次连续三个中超主场保持零封

懂球帝
2025-09-14 22:10:17
55岁窦唯已迁居阿那亚多年,骑电动车,买菜砍价,生活过得惬意

55岁窦唯已迁居阿那亚多年,骑电动车,买菜砍价,生活过得惬意

书雁飞史oh
2025-09-08 17:38:38
中越战争早就可以结束,为何打10年之久?西方:中国暗中收获巨大

中越战争早就可以结束,为何打10年之久?西方:中国暗中收获巨大

芳芳历史烩
2025-09-15 03:33:18
只要中国内部不出现问题,现如今的中国,已经无人能够撼动

只要中国内部不出现问题,现如今的中国,已经无人能够撼动

健身狂人
2025-09-14 18:09:45
查理.柯克遗孀,在丈夫遇刺后首次公开演讲(全文)

查理.柯克遗孀,在丈夫遇刺后首次公开演讲(全文)

南文视界
2025-09-13 17:33:45
回来了!格里芬新角色!已经阔别NBA整整两年

回来了!格里芬新角色!已经阔别NBA整整两年

篮球实战宝典
2025-09-14 11:50:05
人活着要永远记住:如果你想活得久一点,就要学会下面这9句话

人活着要永远记住:如果你想活得久一点,就要学会下面这9句话

朗威谈星座
2025-09-03 06:05:03
反向虚标!iPhone 17,支持 60W 快充

反向虚标!iPhone 17,支持 60W 快充

芝麻科技讯官方号
2025-09-15 00:40:05
屁股大的女生穿瑜伽裤才好看,收腹提臀效果好,瞬间肚腩小一号

屁股大的女生穿瑜伽裤才好看,收腹提臀效果好,瞬间肚腩小一号

小乔古装汉服
2025-09-13 19:20:07
突然!俄罗斯,遭袭!

突然!俄罗斯,遭袭!

喀秋莎大世界
2025-09-14 22:28:36
乌克兰空袭新战术,俄罗斯难以应对:巨资回购土耳其S-400?

乌克兰空袭新战术,俄罗斯难以应对:巨资回购土耳其S-400?

鹰眼Defence
2025-09-14 16:50:48
2:4完败!无缘澳门冠军赛决赛,陈幸同赛后居然如此评价王曼昱!

2:4完败!无缘澳门冠军赛决赛,陈幸同赛后居然如此评价王曼昱!

田先生篮球
2025-09-14 14:45:07
一夜之间,西贝开始炒菜,后厨现场被直播,记者试吃表情一言难尽

一夜之间,西贝开始炒菜,后厨现场被直播,记者试吃表情一言难尽

暖心萌阿菇凉
2025-09-12 20:59:27
原来这就是痞幼啊,我终于知道她长啥样了

原来这就是痞幼啊,我终于知道她长啥样了

陈意小可爱
2025-08-24 13:27:48
为20家客户的RISC-V芯片提供了一站式芯片定制服务 国产芯片龙头20CM涨停 本周机构密集调研相关上市公司

为20家客户的RISC-V芯片提供了一站式芯片定制服务 国产芯片龙头20CM涨停 本周机构密集调研相关上市公司

财联社
2025-09-14 22:14:24
1950年,一铁匠看见毛主席画像,对妻子说道:这是我的结拜兄弟

1950年,一铁匠看见毛主席画像,对妻子说道:这是我的结拜兄弟

文史道
2025-09-14 06:45:10
2025-09-15 04:20:49
CSDN incentive-icons
CSDN
成就一亿技术人
25938文章数 242145关注度
往期回顾 全部

科技要闻

L3级车型要来了!辅助驾驶迎重大利好

头条要闻

罗永浩向贾国龙重新开战:我看你智力有问题 不可救药

头条要闻

罗永浩向贾国龙重新开战:我看你智力有问题 不可救药

体育要闻

利物浦1-0绝杀十人伯恩利 萨拉赫95分钟点射

娱乐要闻

花泽香菜官宣离婚 结束与老公5年婚姻

财经要闻

西贝贾国龙,“错”得离谱

汽车要闻

混动狂潮 835马力V12 阿斯顿·马丁的最后浪漫

态度原创

亲子
家居
时尚
房产
军事航空

亲子要闻

孩子上课坐不住、成绩差,警惕多动症

家居要闻

原木风格 温馨舒适氛围

听说现在年轻人的家都“歪七扭八”的?

房产要闻

「世界冠军×人居升阶」白鹅潭CLD封面,实力馥见人生新高度!

军事要闻

俄无人机飞入波兰 美国务卿:不可接受

无障碍浏览 进入关怀版