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

JavaScript、Python 比 C++ 慢 8 倍、29 倍?

0
分享至

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

近日,来自多伦多大学和 YScope 公司(为软件系统提供创新的日志管理和故障排除工具。由一群计算机工程教授和博士创立)的 David Lion、多伦多大学 Adrian Chiu 和 Michael Stumm、多伦多大学和 YScope 公司 Ding Yuan 共同发布了一份《调查托管语言的运行时性能:为什么 JavaScript 和 Python 比 C++ 慢了 8 倍和 29 倍,而 Java 和 Go 却能更快》(https://www.usenix.org/system/files/atc22-lion.pdf)的论文分析报告,深度剖析了不同编程语言运行时在代码开发中真实的性能情况,由此方便开发者可以精确地测量执行任何字节码指令所花费的时间等。

性能是系统软件不得不面对的挑战

在报告中,研究人员指出,自 2015 年以来,具有集成运行时环境的编程语言越来越受欢迎,其中,全球知名的代码托管平台 GitHub 上最受欢迎的三种语言分别是 JavaScript、Java 和 Python。

作为开发利器,编程语言帮助开发者快速构建各种应用程序和服务,也极大地提高了生产力。同时,这些语言自身也提供了各种功能,如动态类型检查、带有垃圾收集的内存管理,以及动态内存安全检查等等。为此,研究人员用「托管语言」(managed languages)专业术语来指代这些类型的编程语言。

现实来看,托管语言越来越多地被用于实现性能至关重要的系统软件上,如Hadoop 和 Spark 都在 Java 虚拟机(JVM)上运行,因为它们分别用 Java 和 Scala 实现;Kubernetes、etcd(分布式键值存储)和 M3(由 Uber 建立的分布式时间序列数据库和查询引擎)都是用 Go 实现的。

当前,甚至连操作系统(OS)的内核 Biscuit 也是用 Go 实现的 。Openstack、Paypal、Instagram 和 Dropbox 都大量使用 Python,其中,Python 是 Dropbox "在后台服务和桌面客户端应用中使用最广泛的语言",在一个存储库中就有近 400 万行 Python 代码;JavaScript 也被用于 Facebook 的 Bladerunner pub/sub 系统的性能关键路径中。

在开发过程中,编程语言的性能在一开始很少会被考虑到项目中,部分原因是不少开发者认为性能问题可以在以后慢慢去解决,也许可以通过简单地增加硬件来进行横向扩展。

不过,随着代码产品或服务使用规模的扩大,服务变得越来越慢或者硬件成本变高,性能成为一个不容忽视的问题。这也是为什么 Stream 要放弃了 Python 而改用 Go、 Discord 从 Go 切换到 Rust、Twitter 从 Ruby on Rails 切换到 Scala 和 Java 的主要原因。

不少开发者往往为了提升性能,想破脑袋,但现实只有两条路,一条是从现有的代码中想尽办法尽可能地做优化,另一条是思考使用的编程语言是否已经达到了性能极限,看看有没有必要将旧的代码移植到一个新的性能更高的语言上。

为了彻底解开系统软件中不同编程语言导致的性能问题,研究人员决定以 C++ 为极限,对 Java、Go、JavaScript 和 Python 四种编程,还有应用最广泛的运行时系统 CPython、OpenJDK。Node.js 与 JavaScript 的 V8 引擎进行深入的定量性能分析。

同时,研究人员还从头开始建立了 6 个应用程序,并创建了一个名为 LangBench 基准(https://github.com/topics/langbench)。这些应用程序涵盖了各种不同的计算强度、内存使用、网络和磁盘 I/O 强度以及可用的并发性的应用场景等复杂性。对此,研究人员全面分析了它们的完成时间、资源使用和可扩展性。

测试方法

值得一提的是,研究人员指出,这份论文没有也不可能全面地回答与语言运行时的性能有关的每一个问题。本文只是评估了四种语言的运行时,而且对于每种语言,只评估了最广泛使用的实现。此外,研究人员只在一个单一的操作系统/硬件堆栈上运行了工作负载。其研究结果与使用的基准有关,这些基准模拟了现实生活中的应用,但可能不代表广泛的应用。

在测试方法上,研究人员在两台内部服务器上进行了实验,每台服务器有 2 个Xeon E5-2630V3、16 个虚拟核心、2.4GHz CPU、256GB DDR4 内存和两个 7200 RPM 硬盘。它们运行的系统是 Linux 4.15.0,并通过 10Gbps 的互联网络连接。

对于 C++ 程序,研究人员使用的是 GCC 9.3.0 根据 C++17 标准用 -O3 进行编译。对于 OpenJDK 13、CPython 3.8.1 和Go 1.14.1 ,其使用了各自语言的参考实现。同时,使用 Node.js 13.12.0 和 V8 7.9.317.25 版本。

研究人员对每个基准进行了 5 次测试,取平均值。其中,在运行键-值存储、日志分析器和文件服务器的基准时,client 和 worker 线程的数量从 1 到 1024 不等。对于 OpenJDK 和 V8 来说,最小的内存量是通过确定不会导致崩溃的第一个堆配置来设置的;对于 Go 来说,GOGC 被设置为5%。然后研究人员不断增加堆的设置,直到性能不再提高。其使用第一个设置的结果(即最小的堆大小)得出最佳性能。对于日志解析器和文件服务器基准,所用的日志文件被存储在一个复制系数为 2 的分布式文件系统上。 在运行每个基准之前,研究人员都清除了 Linux 的页面缓存,以保证测试准确性。

Java、Go 更具竞争力,JavaScript、Python 比 C++慢了 8 倍和 29 倍

最终 LangBench 中各项基准的运行时间结果如下所示:

其中,优化的 GCC 平均速度最快,Go 和 OpenJDK 紧随其后,比 GCC 慢了 1.30 倍和 1.43 倍。令人印象深刻的是,在 12 项基准测试中,Go 和 OpenJDK 有 3 项超过了优化的 GCC。

总体而言,研究人员发现 V8 / Node.js 和 CPython 表现最差,执行应用程序的平均速度分别比 C++ 应用程序慢 8.01 倍和 29.50 倍,这意味着运行时下,JavaScript、Python 要比 C++ 慢这么多。更糟糕的是,这两个运行时上的应用程序扩展性很差,因为它们无法有效地利用多个内核。在极端情况下,CPython 比 GCC 慢了 129.66 倍(在排序基准中)。V8/Node.js 和 CPython 只有在工作负载受到磁盘 I/O 的瓶颈时,即在文件服务器基准中,才与 GCC 有竞争力。

相比之下,OpenJDK 和 Go 应用程序即 Java 和 Go 语言比 C++ 更具有性能竞争力,运行速度仅慢了 1.43 倍和 1.30 倍,并且可以轻松扩展到多个内核。在一些应用中,OpenJDK 和 Go 的性能超过了 C++ 的同类产品。

更多完整报告内容详见:https://www.usenix.org/system/files/atc22-lion.pdf

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

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.

相关推荐
热点推荐
全体集合,下周的预测出来了!A股深V反转,我来说两句!

全体集合,下周的预测出来了!A股深V反转,我来说两句!

一担金
2026-05-15 12:07:23
苏超争冠大戏:凯尔特人读秒点球绝杀,将与哈茨上演末轮生死战

苏超争冠大戏:凯尔特人读秒点球绝杀,将与哈茨上演末轮生死战

星耀国际足坛
2026-05-14 15:37:44
至少在已经过去的25年里,中国的“财神”不是赵公明,而是WTO!

至少在已经过去的25年里,中国的“财神”不是赵公明,而是WTO!

细雨中的呼喊
2026-02-21 06:59:07
两次嫁给梁靖崑,退圈安心照顾两个儿子,如今丈夫成为大学教授

两次嫁给梁靖崑,退圈安心照顾两个儿子,如今丈夫成为大学教授

笑饮孤鸿非
2026-05-13 18:59:58
主角:四个女人四种结局,李青娥惨死,米兰嫁富商,花彩香最可惜

主角:四个女人四种结局,李青娥惨死,米兰嫁富商,花彩香最可惜

阿废冷眼观察所
2026-05-13 01:40:05
特斯拉中国官宣全新优惠,5.59 万即可提 Model 3 了!

特斯拉中国官宣全新优惠,5.59 万即可提 Model 3 了!

XCiOS俱乐部
2026-05-13 14:22:27
004核航母落空?美媒:除关键术落后,很多原因让中国没必要造它

004核航母落空?美媒:除关键术落后,很多原因让中国没必要造它

叹为观止易
2026-05-15 08:01:00
恒大5 月 18 日香港高院开庭,暴雷 3 年,终于有人要买单了

恒大5 月 18 日香港高院开庭,暴雷 3 年,终于有人要买单了

贱议你读史
2026-05-14 07:05:04
天王山创9纪录仍未获尊重!名嘴直言G6才是哈登考验 美媒盼破魔咒

天王山创9纪录仍未获尊重!名嘴直言G6才是哈登考验 美媒盼破魔咒

颜小白的篮球梦
2026-05-15 12:17:49
千万网友组成最悲壮调查兵团,全死在了各大地图APP的假公厕门前

千万网友组成最悲壮调查兵团,全死在了各大地图APP的假公厕门前

情报姬
2026-05-13 23:05:41
二战时期,唯一一个没有参战的世界性强国,当时它到底在忙什么?

二战时期,唯一一个没有参战的世界性强国,当时它到底在忙什么?

云霄纪史观
2026-05-14 17:55:31
访华第二天,特朗普像变了个人,主动对华交底,中美共同敌人浮现

访华第二天,特朗普像变了个人,主动对华交底,中美共同敌人浮现

凉了时光人
2026-05-15 06:30:45
终于知道宇树科技的王兴兴为什么推出一个不成熟的机甲了。

终于知道宇树科技的王兴兴为什么推出一个不成熟的机甲了。

荆楚寰宇文枢
2026-05-13 23:24:45
英国真的会成为穆斯林国家吗?分享Claude的结论

英国真的会成为穆斯林国家吗?分享Claude的结论

刘耘博士
2026-05-14 08:50:43
马克龙非洲上演“皇上回宫”,丢尽法兰西脸面

马克龙非洲上演“皇上回宫”,丢尽法兰西脸面

浪子的烟火人间
2026-05-15 13:03:22
5万人怒砸东京街,高市早苗终于服软认怂,中方冷回:不纠错免谈

5万人怒砸东京街,高市早苗终于服软认怂,中方冷回:不纠错免谈

泠泠说史
2026-05-14 21:52:49
恩里克:刚来就拿两座冠军?我连一个都没想过,更别说两个了

恩里克:刚来就拿两座冠军?我连一个都没想过,更别说两个了

懂球帝
2026-05-15 04:23:43
熟客不再光顾都是因为啥?网友:这老板掉钱眼里了

熟客不再光顾都是因为啥?网友:这老板掉钱眼里了

解读热点事件
2026-05-05 00:05:15
朱元璋为什么将蓝玉剥皮?看看蓝玉怎么对北元王妃:换你你也杀!

朱元璋为什么将蓝玉剥皮?看看蓝玉怎么对北元王妃:换你你也杀!

铭记历史呀
2026-05-14 15:16:12
湖人内部矛盾加剧,传詹东互相厌恶,詹姆斯立雕像基本无望

湖人内部矛盾加剧,传詹东互相厌恶,詹姆斯立雕像基本无望

艺兔体坛
2026-05-14 16:25:13
2026-05-15 14:32:52
CSDN incentive-icons
CSDN
成就一亿技术人
26545文章数 242288关注度
往期回顾 全部

科技要闻

两年联姻一地鸡毛,传苹果OpenAI濒临决裂

头条要闻

特朗普访华"二号位"系美国驻华大使 其曾受超规格礼遇

头条要闻

特朗普访华"二号位"系美国驻华大使 其曾受超规格礼遇

体育要闻

德约科维奇买的球队,从第6级联赛升入法甲

娱乐要闻

方媛回应住男生单人间:女孩的配得感

财经要闻

特朗普的北京时刻

汽车要闻

双零重力座椅/AI智能体/调光天幕 启境GT7内饰发布

态度原创

数码
时尚
房产
旅游
公开课

数码要闻

单台9.8PB!戴尔将40块245TB 铠侠SSD塞进一台2U服务器:一台顶一套豪宅

冰凉一夏 | 比没穿还舒服,这些贴身衣物我囤了5件

房产要闻

海南楼市新政要出!拟调公积金贷款额度,最高可贷168万!

旅游要闻

中国游、中国购“热力”值爆表 “政策红利+服务升级”让外国游客解锁多彩中国

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版