USENIX ATC2022顶会
Investigating Managed Language Runtime Performance: Why JavaScript and Python are 8x and 29x slower than C++, yet Java and Go can be Faster?
David Lion, Adrian Chiu, Michael Stumm, Ding Yuan
摘要
The most widely used programming languages today are managed languages. They are popular because their vast features improve many aspects of code development, including increased productivity and safety. However, as a product or service scales in usage, performance issues become a problem. Developers are then often faced with complex choices as they must decide whether the desired performance can be squeezed from existing code, or whether their language has reached its performance limits, requiring years of code to be ported to a new more-performant language. To make matters worse, runtime performance is shrouded in mystery as it involves complex interactions of different components, such as interpreter, just-in-time (JIT) compiler, thread library, and Garbage Collection (GC) system.
We present an in-depth performance analysis and comparison of Java, Go, JavaScript, and Python, using C++ as a baseline. We carefully instrumented the different language runtimes, so that developers can precisely measure the number of cycles taken to execute any bytecode instruction, or the overhead of dynamic type checking in JavaScript. This allows us to accurately identify sources of overhead. We further created 6 applications from the ground up to establish the LangBench benchmark; the applications cover a range of complexity, and they cover a variety of application scenarios differing in compute intensity, memory usage, network and disk I/O intensity, and available concurrency. We comprehensively analyze their completion times, resource usage, and scalability.
Overall, we found that V8/Node.js and CPython exhibit excessive overheads, executing applications 8.01x and 29.50x slower on average than their C++ counterparts, respectively. Making matters worse, applications on these two runtimes scale poorly in that they cannot effectively utilize more than one core. In contrast, OpenJDK and Go applications are performance competitive to C++, running only 1.43x and 1.30x slower, respectively, and they can easily scale to multiple cores. There are applications where OpenJDK and Go outperform their C++ counterparts.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了每一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
引用它的顶会 Paper6
- Validating JIT Compilers via Compilation Space ExplorationCong Li, Yanyan Jiang, Chang Xu, Zhendong SuSOSP 2023 · 被引用 22 次
- SafeBound: A Practical System for Generating Cardinality BoundsKyle B. Deeds, Dan Suciu, Magdalena BalazinskaSIGMOD 2023 · 被引用 19 次
- SlipCover: Near Zero-Overhead Code Coverage for PythonJuan Altmayer Pizzorno, Emery D. BergerISSTA 2023 · 被引用 11 次
- It's Not Easy Being Green: On the Energy Efficiency of Programming LanguagesNicolas van Kempen, Hyuk-Je Kwon, Dung Tuan Nguyen, Emery D. BergerASE 2025 · 被引用 8 次
- Evaluating Garbage Collection Performance Across Managed Language RuntimesYicheng Wang, Wensheng Dou, Yu Liang, Yi Wang 等ICSE 2025 · 被引用 1 次
它引用的顶会 Paper3
- M3: end-to-end memory management in elastic system software stacksDavid Lion, Adrian Chiu, Ding YuanEuroSys 2021 · 被引用 3 次
- Bladerunner: Stream Processing at Scale for a Live View of Backend Data Mutations at the EdgeJeff Barber, Ximing Yu, Laney Kuenzel Zamore, Jerry Lin 等SOSP 2021 · 被引用 1 次
- CLP: Efficient and Scalable Search on Compressed Text LogsKirk Rodrigues, Yu Luo, Ding YuanOSDI 2021
相关 Paper
- Let It Go: Relieving Garbage Collection Pain for Latency Critical Applications in GolangJunxian Zhao, Xiaobo Zhou, Sang-Yoon Chang, Chengzhong XuHPDC 2023
- Shaving the Peaks: Taming Tail Latency for Managed Workloads via Disaggregated Garbage CollectionHongtao Lyu, Yuhan Li, Mingyu WuOSDI 2026
- Bringing Managed Language Support to WebAssembly with External Library LinkingShuyao Jiang, Ruiying Zeng, Yangfan Zhou, Michael R. LyuFSE 2026
- DyPyBench: A Benchmark of Executable Python SoftwareIslem Bouzenia, Bajaj Piyush Krishan, Michael PradelFSE 2024 · 被引用 8 次
- DroidPerf: Profiling Memory Objects on Android DevicesBolun Li, Qidong Zhao, Shuyin Jiao, Xu LiuMobiCom 2023 · 被引用 18 次
