0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

各种编程语言的能耗对比分析

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-10-20 11:23 次阅读

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

5757a344-3234-11ed-ba43-dac502259ad0.png

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

576a8888-3234-11ed-ba43-dac502259ad0.png

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

01

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

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

02

编译型语言的优点

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

57863b5a-3234-11ed-ba43-dac502259ad0.png

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

57931f3c-3234-11ed-ba43-dac502259ad0.png

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

57a3790e-3234-11ed-ba43-dac502259ad0.png

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

57b512d6-3234-11ed-ba43-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3759

    浏览量

    64266
  • 编程语言
    +关注

    关注

    10

    文章

    1937

    浏览量

    34588

原文标题:27种不同编程语言能耗对比!

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RoCE与IB对比分析(二):功能应用篇

    在上一篇中,我们对RoCE、IB的协议栈层级进行了详细的对比分析,二者本质没有不同,但基于实际应用的考量,RoCE在开放性、成本方面更胜一筹。本文我们将继续分析RoCE和IB在拥塞控制、QoS、ECMP三个关键功能中的性能表现。
    的头像 发表于 11-15 14:03 136次阅读
    RoCE与IB<b class='flag-5'>对比分析</b>(二):功能应用篇

    对比Python与Java编程语言

    Python与Java都是目前非常流行的编程语言,它们各有其独特的优势和适用场景。以下是对这两种编程语言对比: 一、语法和易用性 Pyth
    的头像 发表于 11-15 09:31 198次阅读

    光伏电站运维管理系统与传统运维模式对比分析

           光伏电站运维管理系统与传统运维模式对比分析        随着全球对可再生能源的关注度不断提升,光伏电站作为绿色能源的重要组成部分,其运维管理显得尤为重要。传统的运维模式已逐渐无法满足
    的头像 发表于 11-08 16:14 181次阅读
    光伏电站运维管理系统与传统运维模式<b class='flag-5'>对比分析</b>

    常用音频线接口对比分析

    对比分析: 一、光纤接口 原理 :利用光信号进行音频传输,采用光从光密介质进入光疏介质时发生全反射的原理。 转换方式 :音频信号→数字信号→光信号→数字信号→音频信号。 优点 :传输速度快、抗干扰能力强、传输距离长,且不受外界电磁波干扰,能支持
    的头像 发表于 10-30 15:58 266次阅读

    C语言与Java语言对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C语言和Java
    的头像 发表于 10-29 17:31 190次阅读

    安科瑞智慧工厂解决方案--让能耗监测全面+有效-能耗监控,能效分析,节能优化

    ,通过数据分析、挖掘和趋势分析,帮助企业针对各种能源需求及用能情况、能源质量、产品能源单耗、各工序能耗、重大能耗 设备的能源利用情况等进行
    的头像 发表于 10-25 13:45 185次阅读
    安科瑞智慧工厂解决方案--让<b class='flag-5'>能耗</b>监测全面+有效-<b class='flag-5'>能耗</b>监控,能效<b class='flag-5'>分析</b>,节能优化

    risc-v与esp32架构对比分析

    RISC-V与ESP32在架构上存在显著的差异,这些差异主要体现在处理器类型、设计原则、功能特性以及应用场景等方面。以下是对两者架构的详细对比分析: 一、处理器类型与设计原则 RISC-V : 类型
    发表于 09-26 08:40

    对比分析点焊机与传统焊接方法

    在焊接技术的演进历程中,点焊机凭借其高效、精确与自动化的特性,在现代工业制造中迅速崛起,成为现代工业制造中的重要工具。相较于历史悠久的传统焊接方式,点焊机展现了诸多独特优势。以下我们将从点焊机的工作原理、优缺点及应用领域三大维度,对两者进行细致入微的对比分析
    的头像 发表于 09-12 11:52 343次阅读

    网关和路由器的对比分析

    网关和路由器作为计算机网络中的关键设备,各自承担着不同的角色和功能。下面将从定义、功能、应用场景、性能等多个方面对网关和路由器进行对比分析
    的头像 发表于 08-27 10:20 938次阅读

    激光锡焊与回流焊接对焊点影响的对比分析

    针对电子装联技术的特点,激光锡焊与回流焊接在对焊点影响方面做以下对比分析
    的头像 发表于 08-23 11:19 397次阅读

    交流伺服电机与直流伺服电机的对比分析

    伺服电机作为现代工业自动化领域的核心动力元件,广泛应用于各种高精度、高效率的运动控制系统中。其中,交流伺服电机和直流伺服电机作为两种主要的伺服电机类型,各有其独特的工作原理、性能特点和应用场景。本文将对这两种伺服电机进行详细的对比分析,以期为工程师和技术人员在实际应用中提
    的头像 发表于 06-24 14:40 741次阅读

    控制继电器与PLC的对比分析

    将对控制继电器和PLC进行详细的对比分析,旨在帮助读者更好地理解两者的差异,以便在实际应用中做出更合适的选择。
    的头像 发表于 06-03 15:01 1.8w次阅读

    超级电容储能与飞轮储能的对比分析

    随着全球能源结构的转型和可再生能源技术的快速发展,储能技术已成为电力系统中的重要组成部分。超级电容储能和飞轮储能作为两种新兴的储能技术,各自具有独特的优点和局限性。本文将对这两种储能技术进行全面对比分析,旨在探讨它们在不同应用场景下的优势和适用性,为储能技术的选择和应用提供参考。
    的头像 发表于 05-17 15:48 2353次阅读

    企业节能管理系统 能耗分析系统

    ,通过数据分析、挖掘,帮助企业针对各种能源需求及实际用能情况、产品能源单耗、工序能耗、重点设备用能等进行能耗统计、同环比分析、能源成本
    的头像 发表于 01-29 14:31 391次阅读
    企业节能管理系统 <b class='flag-5'>能耗</b><b class='flag-5'>分析</b>系统

    DC电源模块与AC电源模块的对比分析

    DC电源模块与AC电源模块的对比分析 BOSHIDA DC电源模块和AC电源模块是两种常见的电源模块,它们在供电方式、稳定性、适用范围等方面有所不同,下面是它们的对比分析: 1. 供电方式: DC
    的头像 发表于 01-15 14:01 862次阅读
    DC电源模块与AC电源模块的<b class='flag-5'>对比分析</b>