作者 | JEAN-LUC AUFRANC
译者 | 弯月
提到编程语言,人们第一时间想到的无非是:哪个编程语言简单易学,亦或是最挣钱等。但是编程语言功耗问题却被很多人忽视。那么作为程序员的我们如何选择编程语言,使其以低能耗高功效地工作呢?
2017年,葡萄牙大学的研究人员团队曾发表过一篇题为《各种编程语言的能耗》的论文,他们比较了各个编程语言(及其编译器/解释器)的能耗,为此他们研究了 27 种知名编程语言的运行时、内存使用情况以及能耗。最后,C 成为了无可争议的赢家,其能耗最低,而 Python 和 Perl 则处于最末位。
据悉,这项研究采用了多种方法论和多个基准测试。每种语言使用十个编程问题来进行调查,帮助研究人员获得更具有可比性、代表性和广泛性的程序,以及编译/执行选项和编译器版本。
C /C 能耗最低且最快
尽管人们普遍认为程序运行速度更快时能源消耗会随之降低,但论文中明确指出“更快的语言并不总是最节能的”,强调这并不像 E(nergy) = T(ime) x P(ower) 的物理定律那么简单。
比如在他们的一项基准测试中,Chapel 程序的执行时间比用 Pascal 编写的等效程序少 55%——但 Pascal 程序使用的能量少 10%。
在人们传统印象中,编译语言“往往”是最节能、运行速度最快的。首先我们来看一看编译语言在二叉树测试上的结果。
不出意料,这项研究得出的结论为:编译语言是最快和最节能的语言。C 和 C 语言是能耗最低且最快的语言。Go 是编译语言中表现最差的语言,甚至比依赖虚拟机的 Java 或 Erlang 等还要糟糕,至少在二叉树的测试中是这样。
Perl、Lua 和 Python能耗高
下面看一下解释型语言在速度与能耗方面的表现,由测试可知解释型语言才是能耗最高的语言,比如 Perl、Lua 和 Python。
而5 种最慢的语言也是解释型语言,如:Lua、Python、Perl、Ruby 和 Type。但在使用正则表达式操作字符串时,5 种最节能的语言中有三种解释型语言,分别是 TypeScript、JavaScript 和 PHP。
请注意,所有测试都是在如下环境运行:Intel Core i5-4460 Haswell CPU @ 3.20GHz,16GBRAM,Ubuntu Server 16.10 操作系统和Linux 4.8.0-22。考虑到如今 MicroPyhon 可以在各种微控制器上运行,猜它在体积更小的设备上的表现可能不会那么糟糕。
此外,这项研究还根据时间、内存和能耗参数的不同目标组合,对每种语言进行了排名,而在这些指标中 C 语言始终名列前茅。这与人们长久以来的认知相同,如果你想优化程序,提高续航时间,降低功耗,则 C 语言绝对是最佳选择、汇编语言、SIMD 指令或加速器的自定义指令优化某些例程。
参考链接:
- https://www.cnx-software.com/2021/11/18/save-the-planet-program-in-c-avoid-python-perl/