最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 手机快没电时怎么选择编程语言?2017年葡萄牙研究者组成调查

    当手机快没电的时候,管理软件经常会提醒我们关闭某些耗电大的应用程序。可见,除了硬件厂商,软件厂商也要关注能耗问题。在这篇文章中,研究人员分析了各种编程语言的能耗比较。

    当能耗也成为重要指标时,我们该如何选择编程语言?2017 年,一个由 6 名葡萄牙研究人员组成的团队决定调查这个问题,并发表了一篇名为《跨编程语言的能源效率》的论文。他们用 27 种语言编写了 10 个问题的解决方案(遵循相同的算法),然后运行这些解决方案,记录每种编程语言的功耗以及速度和内存使用情况,并将结果排序如下图所示:

    从这项研究中,他们得出了一些有趣的结论,比如跑得快的语言不一定会消耗更少的能量。

    在论文中,作者还从编程语言执行类型(编译、虚拟机或解释)和编程范式(命令式、函数式、面向对象和脚本)方面分析了结果。

    具体来说,研究人员使用了计算机语言基准游戏中的 10 个问题,这是一个用于比较性能的免费软件项目,其中包括一组标准算法问题和一个运行测试的框架,使研究更具可比性和代表性。

    运行各种基准测试很重要,因为它们的结果会因执行的测试而异。例如,C 被认为是最快的并且总体上也是最节能的。但在涉及扫描 DNA 数据库以查找特定基因序列的基准测试中,Rust 是最节能的,C 排在第三位。

    即使在同一个测试中,“最佳”语言也取决于您的标准。例如,在 C 排名 二、Rust 排名第一的测试中,如果结果按内存使用情况排序,Rust 将下降 9 位。在 Fortran 是第二高能效的测试中,如果按运行时排序结果,它也下降了 6 位。

    研究人员指出,他们严格遵守 CLBG 项目的编译器版本和最佳优化标志指南。功耗是使用 Intel 的工具 Running Average Power Limit 测量的,每个程序运行 10 次。“这是为了减少冷启动和缓存效应的影响,并能够分析测量的一致性并避免异常值,”作者说。

    为了增强一致性,所有测试都在运行 Linux Ubuntu Server 16.10(内核版本 4.8.0-22-generic)的台式计算机上运行。

    更快的语言是否更节能?

    本文仔细研究了一个常见假设:更快的程序消耗更少的能量。研究人员指出,其实这并不像物理定律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),而其余的则完全分散。

    ibm服务器上虚拟软驱_虚拟机上可以编程吗_淘宝上虚拟充值软件

    即使在单一的基准测试中,也有一些语言速度快但不节能。

    编译语言的优点

    编译语言似乎是最节能和最快的,作者甚至可以在他们的论文中量化这种差异。

    平均而言,编译语言运行该解决方案的成本为 120J,而虚拟机和解释语言的成本分别为 576J 和 2365J。

    在比较执行时间时,研究人员也使用了相同的精度,得出的结论是,编译语言平均耗时 5103 毫秒,虚拟机语言耗时 20623 毫秒,解释语言平均耗时 87614 毫秒。

    两个排名中的前 4 名都是编译语言(Java 语言除外)。

    最慢的 5 种语言都是解释型语言:Lua、Python、Perl、Ruby 和 Typescript。最耗能的五种语言也是解释型语言:Perl、Python、Ruby、JRuby、Lua。

    但同时,在使用正则表达式操作字符串时,最节能的 5 种语言(TypeScript、JavaScript 和 PHP)中有 3 种是解释型语言。尽管在其他情况下,它们往往不是很节能。

    编译语言也占据了内存使用最少的前 5 名。

    “平均而言,编译语言需要 125Mb,虚拟机语言需要 285Mb,解释语言需要 426Mb,”研究人员说。具体来说,该排名垫底的有四种解释型语言虚拟机上可以编程吗,这意味着它们消耗的内存空间最多。

    “如果按照它们的编程范式排序,命令式语言需要 116Mb,面向对象语言需要 249Mb,函数式编程语言需要 251Mb,脚本需要 421Mb。”

    事实上,在比较不同的范例时,命令式编程通常会脱颖而出。与面向对象、函数式和脚本范式相比,命令式编程基准平均使用更少的能量并且运行得更快。

    但是有很多因素需要考虑。“很明显,不同的编程范式,甚至是同一范式内的语言,对能耗、时间和内存的影响都完全不同虚拟机上可以编程吗,”研究人员说。但是,这些因素中哪个最重要取决于您自己的需求(例如,后台任务并不总是需要最快的运行时间)。

    一些应用程序需要同时考虑这两个因素,例如能耗和执行时间。“在这种情况下,C 是最好的解决方案,因为它具有两个优点,”研究人员说。如果你想在节省内存的同时节省时间,那么 C、Pascal 和 Go 语言都可以。如果您查看 3 个变量(时间、能源消耗和内存使用),结论是相同的。但是,如果您只是想在使用更少内存的同时节省能源,那么最好的选择是 C 或 Pascal。

    参考链接:

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 手机快没电时怎么选择编程语言?2017年葡萄牙研究者组成调查

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论