侵权投诉

各种编程语言的能耗对比

中科院长春光机所 2020-11-13 10:14 次阅读

在手机快没电时,管理软件往往会提醒我们关掉某些耗电量高的应用。可见,除了硬件厂商外,软件厂商也应该重视能耗问题。在这篇文章中,研究者分析了一下各种编程语言的能耗对比。

当能耗也成为了一个重要指标,我们要怎么选择编程语言?2017年,由6名葡萄牙研究者组成的团队决定对这一问题进行调查并发表了一篇名为《EnergyEfficiencyAcrossProgrammingLanguages》的论文。他们用27种语言写出了10个问题的解决方案(遵循同样的算法),然后运行这些方案,记录每种编程语言消耗的电量以及速度和内存使用情况,得到的排序结果如下图所示:

通过这项研究,他们得出了一些有意思的结论,比如运行速度快的语言未必能耗小。在论文中,作者还根据编程语言的执行类型(编译、虚拟机或解释)和编程范式(命令式、函数式、面向对象和脚本)对结果进行了分析。具体而言,研究者使用了来自ComputerLanguageBenchmarksGame(一个用于比较性能的免费软件项目,其中包含一组标准的算法问题和用于运行测试的框架)的10个问题,使得研究更有可比性和代表性。运行各种基准测试非常重要,因为它们的结果会由于所执行的测试而有所不同。例如,总体而言,C语言被认为是最快的,也是最节能的。但是在涉及扫描DNA数据库中特定基因序列的基准测试中,Rust是最节能的,而C语言位居第三。即使在同一测试中,「最佳」语言也取决于你的标准。比如在一个C排第二、Rust排第一的测试中,如果按内存使用情况对结果进行排序,Rust会跌掉9个位次。而在一个Fortran能效第二高的测试中,如果结果按照运行时间排序,它也下降了6个位次。研究者指出,他们严格遵守CLBG项目关于编译器版本和最佳优化标志的指导方针。功耗的测量使用一个来自英特尔的工具——RunningAveragePowerLimit,每个程序运行10遍。作者表示,「这是为了减少冷启动和缓存效应的影响,并能够分析测量的一致性,避免异常值」。为了增强一致性,所有测试都在一个运行LinuxUbuntuServer16.10(内核版本4.8.0-22-generic)的台式机上运行。

运行速度快的语言更节能吗?

这篇论文认真地研究了一个普遍的假设:速度越快的程序消耗的能源就越少。研究者指出,其实,这并不像物理学定律E(nergy)=T(ime)xP(ower)那么简单。这是因为电力并不按照一定的速率进行消耗。在其他研究者的一项研究中,一个C++hapel程序的运行时间比另一个用Pascal写的等价程序少55%,但测量结果却表明,那个Pascal程序所用的能量反而要少10%。因此,尽管普遍认为程序运行速度更快时能耗会下降,但研究者明确指出「速度更快的语言并不总是更节能。」这可能是一个很难回答的问题,因为功耗受到许多因素的影响(包括编译器的质量和使用的库)。但最终,研究人员总结出,无论是编译型语言、解释型语言还是虚拟机,其实大部分能量(平均88%左右)是由CPU消耗的。在对实验结果分析研究之后,研究者还得出结论:DRAM的峰值使用量与能耗之间「几乎没有关系」。该研究为一个长期存在的问题提供了答案:「速度更快就更环保吗?」是的,的确是这样,在按照执行时间进行排序时,前5种最节能的语言依然排在前5名,而且在能量和时间值方面的差距很小。实际上,在10个基准问题测试中,有9个得分最高者(速度和能源效率两方面)是速度最快和能源效率最高的三种语言之一,这并没有让研究者感到惊讶。众所周知,就像研究中的数据所显示的一样,C、C++和Rust这三种排名最靠前的语言都经过了大量优化,在执行性能上都比较高效。但是按照运行时间对其他24种语言进行排名时,情况就不一样了。只有4种语言保持相同的能耗和时间排名(OCaml、Haskel、Racket和Python),而其余语言则彻底散开。即使在单项基准测试中,也存在速度快但不节能的语言。

编译型语言的优点

编译型语言似乎是最节能和运行最快的语言,作者甚至可以在论文中用数字量化这种差异。平均而言,编译语言需要花费120J能量来运行解决方案,而虚拟机和解释型语言要分别花费576J和2365J。在比较执行时间时,研究者也采用了相同的精度,得出的结论是:平均而言,编译语言花费5103毫秒,虚拟机语言花费20623毫秒,解释型语言花费87614毫秒。两项排名中的前4名均为编译型语言(有一个例外,Java语言)。

5种最慢的语言都是解释型语言:Lua、Python、Perl、Ruby和Typescript。5种能耗最多的语言也都是解释型语言:Perl、Python、Ruby、JRuby和Lua。但同时,在使用正则表达式操作字符串时,5种最节能的语言中有三种(TypeScript、JavaScript和PHP)是解释型语言。尽管在其他情况下,它们往往不是很节能。编译型语言在占用内存最少的排名中也占据了前5名。

研究者称:「平均而言,编译语言需要125Mb,虚拟机语言需要285Mb,而解释语言则需要426Mb。」具体来说,有4种解释型语言在这项排名中垫底,这意味着它们消耗了最多的内存空间。「如果按照它们的编程范式进行排序,命令式语言需要116Mb,面向对象语言需要249Mb,函数式编程语言是251Mb,脚本需要421Mb。」实际上,当比较不同范式时,命令式编程通常排在首位。与面向对象、函数式以及脚本范式的基准程序相比,命令式编程的基准程序平均使用的能源少得多,运行速度也更快。

但是有很多因素需要考虑。研究者称「很显然,不同的编程范式,甚至同一范式中的语言对能耗、时间、内存的影响也完全不同」。但是,其中哪一个因素最重要取决于你自己的需求情况(例如,后台任务并不总是需要最快的运行时间)。某些应用程序需要同时考虑两个因素,如能耗和执行时间。研究者称:「在这样的情况下,C语言是最佳的解决方案,因为它在这两个方面都很有优势。」如果你想在节省内存的同时节省时间,那么C语言、Pascal和Go语言都可以。如果你正在观察3个变量(时间、能耗和内存使用情况),那么结论也是一样的。但是,如果你只是想在使用更少内存的同时节省能源,那么最好的选择是C语言或Pascal。

责任编辑:lq

原文标题:哪种编程语言又快又省电?有人对比了27种语言

文章出处:【微信号:cas-ciomp,微信公众号:中科院长春光机所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

11代i9-11900K CPU-Z跑分首曝:单核力压Zen3、创新纪录

Intel Rocket Lake 11代桌面酷睿将在3月中下旬正式发布上市,各种曝料早已满天飞,不....
的头像 工程师邓生 发表于 02-24 17:03 233次 阅读
11代i9-11900K CPU-Z跑分首曝:单核力压Zen3、创新纪录

魅族将在中国宣布Flyme 9用户界面

Reameizu通过中国质量认证中心(CQC)了解了魅族18型号的电池容量。结果发现,型号为BA18....
的头像 倩倩 发表于 02-24 14:19 61次 阅读
魅族将在中国宣布Flyme 9用户界面

PRS-A0型号与相同的120W快速充电器一起出现在3C的数据库中

Black Shark 4(KSR-A0)的3C认证表明,它可以与支持最高120W快速充电器的MDY....
的头像 倩倩 发表于 02-24 14:08 109次 阅读
PRS-A0型号与相同的120W快速充电器一起出现在3C的数据库中

微软正计划用JavaScript重写Office 365

据悉,Larkin在帖子中声称,微软不会放弃C ++,C#等重要的编程语言,API和正在使用的工具等....
的头像 倩倩 发表于 02-24 11:23 97次 阅读
微软正计划用JavaScript重写Office 365

C语言编程的基本规范有哪些?

为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。本标准规定了程序设计人员进行程序设计时必须遵循...
发表于 02-24 07:22 0次 阅读
C语言编程的基本规范有哪些?

到2024年中国整体云计算市场规模将超1000亿美元

云计算作为当前企业IT基础架构技术的不二之选,已走过探索实践阶段,迎来了多样化全面化的发展时期。ID....
发表于 02-23 17:28 361次 阅读
到2024年中国整体云计算市场规模将超1000亿美元

工业软件到底应该是一个什么样的范畴?

工业软件的定义一向宽泛,在中国也是歧义很多。一种常见的看法是,只要是在工业活动中使用的软件,都可以算....
的头像 传感器技术 发表于 02-23 15:13 445次 阅读
工业软件到底应该是一个什么样的范畴?

现代精密测量技术对一个国家的发展起着十分重要的作用

德国CarlZeiss公司最近开发的CNC小型坐标测量机采用热不灵敏陶瓷技术,使坐标测量机的测量精度....
的头像 传感器技术 发表于 02-23 14:42 228次 阅读
现代精密测量技术对一个国家的发展起着十分重要的作用

Rocket Lake 11代桌面酷睿处理器单核跑分曝光

如果没什么意外,Intel将会在3月18日正式发布Rocket Lake 11代桌面酷睿处理器。虽然....
的头像 lhl545545 发表于 02-23 09:18 296次 阅读
Rocket Lake 11代桌面酷睿处理器单核跑分曝光

C与VB语言联合在proteus上仿真实例的工程文件免费下载

本文档的主要内容详细介绍的是C与VB语言联合在proteus上仿真实例的工程文件免费下载。
发表于 02-23 08:00 7次 阅读
C与VB语言联合在proteus上仿真实例的工程文件免费下载

单片机应用编程技巧那些常见的问题有哪些?

C语言和汇编语言在开发单片机时各有哪些优缺点?   C或汇编语言可以用于单片机,C++能吗?   搞单片机...
发表于 02-23 06:10 0次 阅读
单片机应用编程技巧那些常见的问题有哪些?

电机工程手册Academic Press The Elec的电子书免费下载

电气工程手册的目的是提供一个全面的参考工作,涵盖了广泛的电气工程在一个单一的卷。它是为工业、政府和学....
发表于 02-22 08:00 6次 阅读
电机工程手册Academic Press The Elec的电子书免费下载

嵌入式C语言的高级用法

内存管理 我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都....
的头像 玩转单片机 发表于 02-20 14:25 108次 阅读
嵌入式C语言的高级用法

PLC的编程语言/技术指标及主要功能和特点

  PLC的编程语言   同其它计算机装置一样,PLC的操作是依照其程序操作进行的。国际电工委员会在IEC61131中规定了P...
发表于 02-20 11:48 14次 阅读
PLC的编程语言/技术指标及主要功能和特点

Infinix Note 10 Pro现身Geekbench跑分网站

近日一款名为Infinix Note 10 Pro的新机出现在了Geekbench跑分网站上,该品牌....
的头像 lhl545545 发表于 02-20 10:51 199次 阅读
Infinix Note 10 Pro现身Geekbench跑分网站

索尼Xperia 10 III现身Geekbench跑分数据库

去年底,索尼一款新手机被曝光,该机型名称为索尼Xperia 10 III,它是索尼品牌旗下首款支持5....
的头像 lhl545545 发表于 02-19 16:15 630次 阅读
索尼Xperia 10 III现身Geekbench跑分数据库

单片机为什么要使用C语言看了就知道

单片机为什么要使用C语言?
发表于 02-19 06:18 0次 阅读
单片机为什么要使用C语言看了就知道

苹果公司(Apple Inc.)赢得一项裁决

消费者也对Amazon.comInc的Alexa和Google Assistant提出了类似的投诉。....
的头像 倩倩 发表于 02-18 16:37 665次 阅读
苹果公司(Apple Inc.)赢得一项裁决

Intel Rocket Lake 11代桌面酷睿性能曝光

Intel将在3月份发布Rocket Lake 11代桌面酷睿,各方面基本都没什么秘密了,而在性能上....
的头像 lhl545545 发表于 02-18 10:17 722次 阅读
Intel Rocket Lake 11代桌面酷睿性能曝光

西门子S7-300/400块调用指令UC/CC在S7-1500中无法使用

PORTAL中用UC/CC指令调用 FC/FB块,编程语言必须是STL,且不能带用接口参数,在FC/....
发表于 02-11 17:40 176次 阅读
西门子S7-300/400块调用指令UC/CC在S7-1500中无法使用

超八成用户反对公共消费场使用人脸识别?

在人脸识别被大规模应用的现在,公众对于人脸识别的态度究竟是怎样的呢?新京报智库通过调查问卷的方式找到....
发表于 02-10 10:32 1011次 阅读
超八成用户反对公共消费场使用人脸识别?

ES运行了OS server项目怎么办

如果需要的话(比如,服务器和服务器之间的连接,CAS连接),再次打开弹出菜单,选择“Assign O....
发表于 02-09 17:02 139次 阅读
ES运行了OS server项目怎么办

单片机C语言学习架构

单片机C语言学习架构分享
发表于 02-05 07:35 0次 阅读
单片机C语言学习架构

使用单片机C语言程序实现电子秤仿真设计的实例免费下载

本文档的主要内容详细介绍的是使用单片机C语言程序实现电子秤仿真设计的实例免费下载。
发表于 02-04 16:25 109次 阅读
使用单片机C语言程序实现电子秤仿真设计的实例免费下载

Redis是什么

redisObject 最主要的信息如上图所示:type 表示一个 value 对象具体是何种数据类....
的头像 数据分析与开发 发表于 02-04 16:09 153次 阅读
Redis是什么

数据平台相关的概念全面的认识

随着关系数据库理论的提出,诞生了一系列经典的RDBMS,如Oracle,MySQL,SQL Serv....
的头像 数据分析与开发 发表于 02-04 16:03 436次 阅读
数据平台相关的概念全面的认识

MySQL的基本知识点梳理和常用操作总结

本文主要是总结了工作中一些常用的操作,以及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信....
的头像 数据分析与开发 发表于 02-04 13:44 190次 阅读
MySQL的基本知识点梳理和常用操作总结

C语言开发单片机为啥都是全局变量形式?

全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是: 1. 做控制的工程师; 2. 做非嵌入式....
发表于 02-04 06:14 36次 阅读
C语言开发单片机为啥都是全局变量形式?

C语言多线程的详细教程资料说明

Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务....
发表于 02-03 17:02 44次 阅读
C语言多线程的详细教程资料说明

Realme可能计划在2月推出Narzo 30A系列

RMX3171上个月在印度印度标准局(BIS)权威机构发现。但是,清单没有显示设备的名称。NBTC的....
的头像 倩倩 发表于 02-03 15:48 508次 阅读
Realme可能计划在2月推出Narzo 30A系列

RMX3121及其一些关键的规格和图像出现在TENAA认证平的数据库中

清单显示Realme RMX3121是一款支持5G的手机,尺寸为163.9 x 75.7 x 8.4....
的头像 倩倩 发表于 02-03 15:25 491次 阅读
RMX3121及其一些关键的规格和图像出现在TENAA认证平的数据库中

如何实现大规模生物网络马尔可夫聚类的并行化算法

马尔可夫聚类算法(MCL)是在大规模生物网络中寻找模块的一个有效方法,能够挖掘网络结构和功能影响力较....
发表于 02-03 14:11 29次 阅读
如何实现大规模生物网络马尔可夫聚类的并行化算法

51单片机C语言常用模块与综合系统设计实例精讲的PDF电子书免费下载

《51单片机C语言常用模块与综合系统设计实例精讲》全书针对目前最通用流行的51单片机系列,通过大量典....
发表于 02-03 10:40 72次 阅读
51单片机C语言常用模块与综合系统设计实例精讲的PDF电子书免费下载

C语言嵌入式系统编程注意事项

C语言嵌入式系统编程注意事项 C语言嵌入式系统软件架构 单任务程序典型架构 ...
发表于 02-03 07:44 0次 阅读
C语言嵌入式系统编程注意事项

如何创建自己的数据库

创建自己的数据库
发表于 02-03 07:02 0次 阅读
如何创建自己的数据库

如何在C代码中插入寄存器?

对于逻辑级数较高的路径,常用的方法之一是在其中插入流水寄存器,将路径打断,从而降低逻辑延迟,这在HD....
的头像 Lauren的FPGA 发表于 02-02 17:07 275次 阅读
如何在C代码中插入寄存器?

Verilog数字系统设计教程的PDF电子书免费下载

数字信号处理(DSP)系统的研究人员一直在努力寻找各种优化的算法来解决相关的信号处理问题。当他们产生....
发表于 02-02 16:19 48次 阅读
Verilog数字系统设计教程的PDF电子书免费下载

使用单片机C语言实现步进电机正反转的实例免费下载

本文档的主要内容详细介绍的是使用单片机C语言实现步进电机正反转的实例免费下载。
发表于 02-02 11:19 69次 阅读
使用单片机C语言实现步进电机正反转的实例免费下载

使用单片机C语言实现消防车警报的实例程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机C语言实现消防车警报的实例程序和工程文件免费下载。
发表于 02-02 10:48 42次 阅读
使用单片机C语言实现消防车警报的实例程序和工程文件免费下载

使用单片机C语言实现步进电机转动原理的实例程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机C语言实现步进电机转动原理的实例程序和工程文件免费下载。
发表于 02-02 10:48 63次 阅读
使用单片机C语言实现步进电机转动原理的实例程序和工程文件免费下载

使用单片机C语言实现音乐播放的实例程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机C语言实现音乐播放的实例程序和工程文件免费下载。
发表于 02-02 10:48 38次 阅读
使用单片机C语言实现音乐播放的实例程序和工程文件免费下载

从最底层的内存存储空间开始带你了解C语言指针

一、前言 二、变量与指针的本质 三、指针的几个相关概念 四、指向不同数据类型的指针 五、总结 一、前....
的头像 嵌入式ARM 发表于 02-02 10:40 176次 阅读
从最底层的内存存储空间开始带你了解C语言指针

Rocket Lake 11代桌面酷睿跑分成绩曝光

今年晚些时候(早则9月),Alder Lake 12代酷睿就会到来,同时面向桌面和笔记本,首次在桌面....
的头像 lhl545545 发表于 02-02 09:41 962次 阅读
Rocket Lake 11代桌面酷睿跑分成绩曝光

单片机C语言的学习架构

单片机C语言学习架构分享
发表于 02-02 07:03 0次 阅读
单片机C语言的学习架构

单片机C语言程序设计实例之使用74HC595控制数码管显示四位数字

本文档的主要内容详细介绍的是单片机C语言程序设计实例之使用串入并出芯片74HC595控制数码管显示四....
发表于 02-01 16:45 70次 阅读
单片机C语言程序设计实例之使用74HC595控制数码管显示四位数字

单片机C语言程序设计实例之双向来回的流水灯

本文档的主要内容详细介绍的是单片机C语言程序设计实例之双向来回的流水灯免费下载。
发表于 02-01 16:45 59次 阅读
单片机C语言程序设计实例之双向来回的流水灯

单片机C语言程序设计实例之带日历时钟及温度显示的电子万年历

本文档的主要内容详细介绍的是单片机C语言程序设计实例之带日历时钟及温度显示的电子万年历程序和工程文件....
发表于 02-01 16:45 50次 阅读
单片机C语言程序设计实例之带日历时钟及温度显示的电子万年历

单片机C语言程序设计实例之闪烁的LED

本文档的主要内容详细介绍的是单片机C语言程序设计实例之闪烁的LED程序和工程文件免费下载。
发表于 02-01 16:45 58次 阅读
单片机C语言程序设计实例之闪烁的LED

2020年中国HEV节能乘用车销量分析

从车型销量排名来看,2020年国内HEV节能乘用车销量排名前十的车型分别为雷凌、卡罗拉、雅阁、艾力绅....
的头像 高工锂电 发表于 02-01 10:32 469次 阅读
2020年中国HEV节能乘用车销量分析

C51单片机C语言程序设计解析的学习课件免费下载

C语言程序采用函数结构,每个C语言程序由一个或多个函数组成,在这些函数中至少应包含一个主函数main....
发表于 02-01 09:58 64次 阅读
C51单片机C语言程序设计解析的学习课件免费下载

2020年国内48V节能乘用车销量合计约为33.1万辆,同比增长39%

2020年国内48V节能乘用车在售车型共计24款,销量排名前十的车型分别为奔驰C级、奔驰E级、科鲁泽....
的头像 高工锂电 发表于 02-01 09:28 300次 阅读
2020年国内48V节能乘用车销量合计约为33.1万辆,同比增长39%

C语言经典算法分享

C语言经典算法
发表于 02-01 07:45 0次 阅读
C语言经典算法分享

OPPO正在开发一款名为OPPO A94的新型智能手机

OPPO A94的IMDA列表(通过)显示其型号为CPH2203。不幸的是,除了透露其支持GPS和蓝....
的头像 倩倩 发表于 01-29 15:16 690次 阅读
OPPO正在开发一款名为OPPO A94的新型智能手机

在校园中有哪些场景应用到人脸识别系统?

在图书馆的出入口可以安装人脸识别人证合一身份验证设备,通过刷脸的方式验证出入图书馆人员的身份,这样可....
的头像 倩倩 发表于 01-28 13:41 1484次 阅读
在校园中有哪些场景应用到人脸识别系统?

未来 3 年重点支持操作系统、数据库、CAD、EDA 等领域

近期,深圳市工业和信息化局发布通知,为深入贯彻落实《中共中央 国务院关于支持深圳建设中国特色社会主义....
的头像 工程师邓生 发表于 01-28 11:25 345次 阅读
未来 3 年重点支持操作系统、数据库、CAD、EDA 等领域

巴西数据库发生重大泄密事件

据外媒报道,当地时间周二上午,PSafe的网络安全实验室dfndr报告称,巴西的一个数据库发生了一起....
的头像 如意 发表于 01-27 14:18 518次 阅读
巴西数据库发生重大泄密事件

AMD RDNA3架构或将首次采用MCM多芯封装形式

《奇点灰烬》数据库中出现了AMD GPU的新代号“Nashira Summit”,但目前还没有任何线....
的头像 lhl545545 发表于 01-27 09:07 393次 阅读
AMD RDNA3架构或将首次采用MCM多芯封装形式

手把手教你学51单片机的C语言版PDF电子书免费下载

本书旨在培养和锻炼单片机系统实用开发技能,全书以实践为主线,让读者在一个个实践案例中逐步掌握单片机电....
发表于 01-27 08:00 140次 阅读
手把手教你学51单片机的C语言版PDF电子书免费下载

单片机C语言的优越性

单片机为什么要使用C语言? 8051介绍单片机C语言的优越性 ...
发表于 01-27 06:48 0次 阅读
单片机C语言的优越性

AMD神秘新卡首曝:是双芯设计?或者是双卡并行?

《奇点灰烬》数据库中出现了AMD GPU的新代号“Nashira Summit”,但目前还没有任何线....
的头像 工程师邓生 发表于 01-26 18:16 994次 阅读
AMD神秘新卡首曝:是双芯设计?或者是双卡并行?