slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
10亿行代码,Java 惹性能争议,基准混战其它编程语言
17611538698
webmaster@21cto.com

10亿行代码,Java 惹性能争议,基准混战其它编程语言

编程语言 0 1435 2024-01-09 07:56:40

图片

导读:最近,Java 程序员们将被迫发布最快的解决方案来应对“十亿行代码挑战”,这是 Java 和非 Java 解决方案以及有关编程语言性能在华山之巅的新一轮“较量”。

近日,几位资深开发者发布了新的运行基准来挑战不同流行语言的性能。

有“好事”的资深软件工程师 Gunnar Morling(以前在 Red Hat 工作,现在在 Decodable 工作)向 Java 开发人员发出了新年编程挑战,其目标是“探索现代 Java 语言的优势,并掌握可以将这个平台到底能走多远”。

图片

他出的问题并不复杂。开发人员将被要求“编写一个 Java 程序,用于从文本文件中检索温度测量值并计算每个气象站的最低、平均和最高温度。

图片

挑战地址:https://www.morling.dev/blog/one-billion-row-challenge/

该挑战现在向全球程序员公开征集,代码提交的截止日期为 1 月 31 日。

在撰写本文时,已经有一种使用GraalVM for JDK Community Edition 21(一种使用提前 (AOT) 编译来实现快速启动的 JDK 实现)的领先解决方案,其运行时间为 14.848 秒。

地址:https://github.com/graalvm/graalvm-ce-builds/releases

解决方案是在具有 8 个专用 vCPU 和 32GB 内存、运行于 AMD 处理器和 Fedora 39 Linux 上的云虚拟机上进行评估的。

Java 与其它语言相比速度到底快不快?

在同样功能下,运行速度显示页面中包含 Rust、C#、Go、Python、PostgreSQL、Python、C、C++ 等语言,都是其它网友提交的代码内容。

图片

https://github.com/gunnarmorling/1brc/discussions/categories/show-and-tell

这些语言很难相互比较,这是因为它们在不同的硬件上运行,但也有一些令人印象深刻的结果,包括在 AMD 笔记本电脑上用 C 语言不到 5 秒就完成了结果,还有一个在 Core i5 上运行 5.3 秒的 C# 解决方案。

评估不同编程语言和运行时的性能是一件令人烦恼的事情,因为它很少是相同类型的。

这种情况下的许多解决方案,都有其他开发人员关于如何进一步优化算法的点评,而我们正在比较的是代码质量与原始性能。

另一位名为"吸引人"的开发者发布了25 种语言和运行时的基准测试,他的目的是“关注没有库函数语言本身的性能”。

图片

https://github.com/attractivechaos/plb2

开发人员们“主要是 C 程序员”,承认某些实现可能不是最佳的。虽然如此,它仍然是一个具有启发性的基准代码,包括大量使用嵌套循环、整数运算、矩阵乘法和数组访问来解决包括 15 个皇后问题在内的问题:即一个经典的计算练习,用于计算如何在 nxn 棋盘上放置 n 个皇后,使得没有女王威胁另一个女王。

请见下图:

图片


新基准中语言性能的比较。Matmul 是矩阵乘法的缩写,bedcov 找到大数组之间的重叠


15 皇后问题的执行结果完后,显示出清晰的分组。

C 和 Rust 等系统级编程语言比解释型语言 Python 和 Perl 快五十倍以上。而PHP 和 Ruby 等 JIT(即时编译)语言介于它们两者之间。 

值得注意的是,经过 AOT 编译优化的编程语言一样能够表现良好。包括 C#、Go、Swift 和 Zig 在内跑的 15 皇后问题后,这些语言的性能竟然接近于 C。

接着数独解决问题测试拉开了更大的差距,C# 和 Java 花费的时间竟是 C 和 Rust 的两倍,但仍然比 Python 或 Ruby 快很多倍。

人们还注意到,尽管测试的四个 JavaScript 运行时(Bun、Deno、Node.js 和开发人员自己的 k8)性能接近,但 Bun 跑得是最快的,而 Deno 最慢。

还有另一个关键点:在这种测试中,PyPy 比 CPython 快很多倍。

“尽管 Python 性能不咋好,但它仍然是两种最常用的脚本语言之一,”开发者们纷纷吐槽说。

“未来十年会有一种语言取代Python吗?我看这事儿并不明朗。”

 作者:场长

评论