大多数的人们(包括专业软件开发人员)经常忽略的一点,就是开发软件解决方案时所产生的能源损耗与效率。
最近出现一篇名为“跨编程语言的能源效率”的论文。这篇论文阐述在软件开发时,需要考虑运行时间、内存使用和纯能源消耗等多种维度。
这正是一篇符合当今时代要求的论文,要考虑到气候变化,需要更多能源,尤其是清洁能源。
相关GitHub的 repo 链接,请见:
https://github.com/greensoftwarelab/Energy-Languages
结果页面地址:
https://sites.google.com/view/energy-efficiency-languages
我们来看看软件开发的历史。其实更确切地说是计算机系统的历史,没有它就不可能进行软件开发。
在软件开发的初期,一个重要的问题是内存。例如,1969 年的阿波罗 11 号任务制导计算机只有 4KB 的内存和 32KB 的硬盘。今天,在很大程度上,这个问题已经解决了,当然这还不是全部的需求。
技术的改进、更有效地利用现有技术以及硬件和软件元素之间的通信进步使这种增长成为可能。
今天的首要问题仍然是速度。
我们都想在更短的时间内做更多的事情。如果想达到这一点,仍依赖复杂架构支持,更多的晶体管意味着更多的处理能力。今天的硬件系统上有数十亿甚至数万亿个晶体管。性能最常被视为速度,而其它因素则不在考虑范围之内。
现在我们已经对计算机系统的历史有了一些了解,让我们看看上面论文的结果以及它和今天的相关性。
能耗正在成为人们注意的一个首要问题,嵌入式系统和手机应用程序是优化的主要目标。
此外,加密货币与挖矿的利润也很大程度上取决于消耗了多少能源。
有一些例子表明我们的电池技术仍与当今的需求相比仍有所欠缺。
论文中的研究人员使用基准进行测试。他们在 27 种语言上使用了计算机语言基准测试方法。
结果表明,编译型语言是最快也是最节能的。
C 和 C++ 被证明是节能效果最好的,而 Go 相比较来说并没有那么好。
研究测试在基于 Intel Core i5–4460 Haswell CPU @ 3.20GHz 和 16GB 内存的机器上进行,运行 Ubuntu Server 16.10 操作系统和 Linux 4.8.0–22。
C、C+、Rust 和 Java 是最高效的语言,尽管 Java 会占用过多内存。需要大家注意的重要一点是,更快并不意味着更环保和使用更少的电力。
参考文献:
Pereira, R.、Couto, M.、Ribeiro, F.、Rua, R.、Cunha, J.、Fernandes, JP 和 Saraiva, J.(2017 年)。跨编程语言的能源效率:能源、时间和内存如何关联?第 10 届 ACM SIGPLAN 软件语言工程国际会议论文集 - SLE 2017。
OSNOVE RAČUNARSKIH ARHITEKTURA与Novica Nosović 教授等
编辑:洛逸