编程语言也环保?C语言领跑,Python、Perl垫底

文 | Travis

出品 | OSC开源社区(ID:oschina2013)

毋庸置疑,Python 是世界上最流行的编程语言之一,其被广泛运用于人工智能、数据分析、网络爬虫和 Web 开发等领域。在上个月的 TIOBE 榜单中,Python 一举超过 C 语言拿下榜首的位置也能够充分说明 Python 的流行程度。

但在 2017 年的一项研究,以及今年的补充研究中表明,Python 和 Perl 在一众参考对象中是不够环保和节能的编码语言。

71b6b0f59f7a271a4d72ecd6ac52fe59.png

我们先来说说 2017 年的研究。葡萄牙 Universidade do Minho 大学的研究人员在当时的研究中发现,就执行某些特定任务时消耗的能量而言,在所有参与测试的 27 种编程语言中 Python 和 Perl 的能耗最高,排名垫底,Python 仅比 Perl 稍好一些;而 C 语言能耗最低位居榜首,其次是 Rust、C++ 和 Ada。反应到具体数字上,C 语言的能耗为 1(以排名第一的 C 语言为基准,因此数字为 1),而 Python 和 Perl 都超过了 75。

比较不同编程语言的能源消耗、时间和内存使用情况(2017):

f2b093e5982da4df13eb3047700e6399.png

而且此次研究推翻了大多数人惯有的想法,即人们可能会想当然地认为,一个运行速度更快的计算机程序会消耗更少的能源。但研究表明除了速度之外,还有其他因素会给能耗的最终结果产生影响。

自 2017 年以来这些编程语言都发生了大量变化,因此这个结果可能也不能反映现状。为了迎合这些编程语言的更新迭代,研究人员在今年对这项研究做出了补充,他们更新了测试和结果。在更新的测试中,研究人员建立了 DRAM 能耗、峰值内存和执行期间使用的总内存之间的相互关系。

c17fdfec96a71a3db4c87bd1afd32adc.png

研究团队还进行了一组标准算法以及来自 Rosetta Code 的一些测试,Rosetta Code 是一个比较不同编程语言执行常见算法的网站。从下面的表格可以看出,当涉及到能源消耗时,Python 在大多数测试中都处于排名后半部分,Python 甚至不能在 24 小时截止时间内完成斐波那契任务。

91478f7d3bc822a61b2d7580b725f3a9.pngc446a3cb6ec0bd4248f6ec6753bdf212.png

综合最新的测试结果能够看出,Python 和 Perl 在多项测试中依旧排名垫底,虽然 Ruby 并没有倒数第一的测试成绩,但在多项测试中也均排名靠后。而 C、C++ 和 Rust 则刚好相反,它们是这些测试语言中相对最环保的语言。

6c4d5c6bd4ef54d941278ef141712fd4.png觉得不错,请点个在看呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android最全面试题71道题 详解

http://blog.csdn.net/superjunjin/article/details/7772030 Android面试题 1. 下列哪些语句关于内存回收的说明是正确的? (b ) A、 程序员必须创建一个线程来释放内存 B、 内存回收程序负责释放无用内存 C、 内存回收程序允许程序员直接释放内存 D、 内存回收程序可以在指定…

我靠“读书笔记”闷声赚3万:那些你看不上的行业,往往最赚钱

全世界只有3.14 % 的人关注了爆炸吧知识你有没有计算过:你的时间,值多少钱?如果你月薪5000,一个月工作20天,每天8小时,那么你1小时的价值就是32元。然而,现在请一个打扫卫生的钟点工&#xff0c…

12月16日课程安排

12/16: 6-8PM 新主楼 D218 讲座 1) 微软亚洲研究院的研究员 分享研究经验 (韩石 研究员) 2) 互联网创新公司的研发介绍 (王京: 应用汇首席工程师, 北航 6 系校友) 微软亚洲研究院的研究员建议大家先读一下这些文章: ICSE’12 paper on StackMine – Performance D…

C#元组类型System.ValueTuple

元组功能在 C# 7.0 及更高版本中可用&#xff0c;它提供了简洁的语法&#xff0c;用于将多个数据元素分组成一个轻型数据结构。元组功能需要 System.ValueTuple 类型和相关的泛型类型&#xff08;例如 System.ValueTuple<T1,T2>&#xff09;&#xff0c;这些类型在 .NET …

Cocoapods的安装和使用

一、Cocoapods的安装 第一步&#xff1a;打开终端 第二步&#xff1a;修改ruby镜像引用 gem source --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/ 完成后用命令行查看ruby镜像是否是taobao,用命令行&#xff1a; gem sources -l 返回信息为&#xf…

JAVA软件图片浏览下载_java模拟浏览器下载图片

/** * 抓取网上的图片 * param imgSrc * param filePath */ public static void downloadImgByNet(String imgSrc,String filePath,String fileName){ try{ URL url new URL(imgSrc); URLConnection conn url.openConnection(); //设置超时间为3秒 conn.setConnectTimeout(3*…

微信企业号开发之如何建立连接

http://www.07net01.com/2014/09/167991.html 连接将使你的企业号更具价值&#xff0c;你可以使用以下三种方式&#xff0c;连接你的企业号及企业应用&#xff1a; 1、企业应用调用企业号提供的接口&#xff0c;管理或查询企业号后台所管理的资源、或给成员发送消息等&#xff…

完全颠覆你世界观的10个科学实验!从此脑洞大开

全世界只有3.14 % 的人关注了爆炸吧知识这两天超模君逛知乎时&#xff0c;发现有人提问&#xff1a;“如何让孩子学会主动”&#xff1f;孩子学会主动是很重要的&#xff0c;特别是在学习方面&#xff0c;懂得主动学习无论是在小时候还是未来都很有优势。可能很多家长都有类似的…

js模版引擎handlebars.js实用教程——with-终极this应用

返回目录 1 <!DOCTYPE html>2 <html>3 <head>4 <META http-equivContent-Type content"text/html; charsetutf-8">5 <title>with-终极this应用 - by 杨元</title>6 </head>7 <body>8 <h1>w…

大学

(一才女博客看来的&#xff0c;不错&#xff0c;意境很浓)大一&#xff0c;年少春衫薄。骑马倚斜桥&#xff0c;满楼红袖招。一朝看尽长安花。大二&#xff0c;春日游&#xff0c;杏花插满头。谁家年少足风流&#xff0c;妾身欲语还休。大三&#xff0c;男儿立志出乡关&#xf…

c# 弹性和瞬态故障处理库Polly

关于pollypolly文档中对自己介绍的原文是:Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry,Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner.从…

MySQL账户安全设置

一般来说&#xff0c;安装完MySQL后&#xff0c;默认的用户是root,密码123456&#xff0c;外网不能访问。 有时候也希望在外网访问&#xff0c;则可以添加一个账户。建议不要用root。 如下表&#xff0c;存在安全问题&#xff1a; mysql> select host,user,password from us…

Android之Android Studio--Gradle多渠道打包

于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <…

char varchar java_在数据库中varchar与char的区别

char是固定长度类型varchar是可变的长度类型char和varchar类型相似&#xff0c;但是它们的存储和检索方式不同。在MySQL5.0.3&#xff0c;它们在最大长度和是否保留尾部空格也不相同。char和varchar定义了字符串的最大长度。例如&#xff0c;char(30)可以放30个字符。char列的长…

鄙人之斗,读IT之洋(1)

C#&#xff1a; 自己从最初的参加项目&#xff0c;只懂前台布局如何美观&#xff0c;怎样能将<border>边框整体去除&#xff0c;到如今能够在model,dal,web三层之间游走穿梭&#xff0c;谁又知道中间经历了多少&#xff0c;苦与酸&#xff0c;汗水&#xff0c;快乐&#…

震撼世界的基建狂魔,中国制造的超级工程到底有多牛?

全世界只有3.14 % 的人关注了数据与算法之美1949年的中华大地上一无所有&#xff0c;而现在一栋栋高楼伫立在这片土地上的时候不禁感叹&#xff0c;到底是什么支撑着让我们从一片荒漠变成如今高楼耸立&#xff1f;今天小编带来的这部纪录片《超级工程》&#xff0c;带你认识被称…

C# WPF图表控件之ChartControl用法指南①

“ 引言部分&#xff0c;总领全篇文章的中心内容。”WPF的DevExpress ChartControl是一种功能强大的可视化工具&#xff0c;可帮助您将数据显示为二维或伪三维条形图、区域、线和许多其他形式。01—将数据绑定到Chart SeriesStep 1. 创建新项目并添加图表创建一个新的WPF应用程…

Android之SwipeRefreshLayout

wipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消…

网络传输中的反码求和算法

在发送数据&#xff0c;计算数据包的校验和&#xff0c;按如下步骤&#xff1a; 1、把校验和字段置为0&#xff1b; 2、把需校验的数据看成以16位为单位的数字组成&#xff0c;依次进行二进制反码求和&#xff1b; 3、把得到的结果存入校验和字段中。 在接收数据时&#xff0c;…

IDEA中maven如何将jar包导入本地的maven库

第一步&#xff1a;将IKAnalyzer.jar包存放在一个文件夹中&#xff0c;比如mylib文件夹第二步&#xff1a;建立一个IKAnalyzer.jar包相关的pom.xml文件&#xff0c;需要在pom.xml文件中定义其maven坐标及其相应的依赖代码即可&#xff0c;同样将pom文件存放在上述jar文件同一文…