提到编程语言,人们第一时间想到的无非是:哪个编程语言简单易学,亦或是最挣钱等。但是编程语言功耗问题却被很多人忽视。那么作为程序员的我们如何选择编程语言,使其以低能耗高功效地工作呢?
对于以上问题,葡萄牙大学的研究人员于2017年发表了一篇研究论文《Energy Efficiency across Programming Languages》,对 27 种知名软件语言的运行速度、内存使用和能耗进行了研究,结果表明 C 语言依旧宝刀未老,凭借其精确的内存管理,轻量的设计模式,荣获“最环保”的编程语言的称号。
据悉,研究人员基于 Computer Language Benchmarks Game标准对每种语言使用十个编程问题来进行调查,帮助研究人员获得更具有可比性、代表性和广泛性的程序,以及编译/执行选项和编译器版本。Computer Language Benchmarks GameComputer 是一个用于比较性能的免费软件项目,其中包含一组标准的算法问题和用于运行测试的框架。
此外,研究人员表示运行各种基准测试非常重要,因为它们的结果会由于所执行的测试而有所不同。即使在同一测试中,「最佳」语言也取决于测试者的标准是什么。
尽管人们普遍认为程序运行速度更快时能源消耗会随之降低,但论文中明确指出“更快的语言并不总是最节能的”,强调这并不像 E(nergy) = T(ime) x P(ower) 的物理定律那么简单。
比如在他们的一项基准测试中,Chapel 程序的执行时间比用 Pascal 编写的等效程序少 55%——但 Pascal 程序使用的能量少 10%。
在人们传统印象中,编译语言“往往”是最节能、运行速度最快的。对此研究人员用数字来量化这种差异,结果表明,编译语言仅需要花费 120焦耳能量来运行解决方案,而虚拟机和解释型语言要分别花费 576焦耳 和 2365 焦耳。
而在比较执行时间时,研究者也采用了相同的精度,就平均而言,编译语言花费 5103 毫秒,虚拟机语言花费 20623 毫秒,解释型语言花费 87614 毫秒。除此之外,编译语言在内存占用方面,也稳居前5。
此外研究人员还根据编程语言的执行类型(编译、虚拟机或解释)和编程范式(命令式、函数式、面向对象和脚本)对结果进行了分析。
5 种最慢的语言都是解释型语言:Lua、Python、Perl、Ruby 和 Type。5 种能耗最多的语言也都是解释型语言:Perl、Python、Ruby、JRuby 和 Lua。。但在使用正则表达式操作字符串时,5 种最节能的语言中有三种解释型语言,分别是 TypeScript、JavaScript 和 PHP。
根据上图显示,如果基于能耗和执行时间两个基准来看, C 语言是最佳的解决方案。如果用户想在节省内存的同时还能更快地执行,那么 C 语言、Pascal 和 Go 语言是不错的选择。总的来说,如果用户只是想在使用更少内存的同时节省能源,那么最好的选择是 C 语言或 Pascal。
最后研究人员总结道:“如果你正在寻找一种最好的编程语言,这个问题没有最终答案。尽管每个基准测试中最节能的语言几乎总是最快,没有哪一种语言是经久不衰,可以永远好过其他编程语言的。
参考链接:
- https://thenewstack.io/which-programming-languages-use-the-least-electricity/
- https://hackaday.com/2021/11/18/c-is-the-greenest-programming-language/
论文链接:
- https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf?utm_source=thenewstack&utm_medium=website&utm_campaign=platform