Python太烂了!比C语言慢71倍!消耗的能量是C语言的75倍!

最近看到一个有趣的编程语言研究,它把27种编程语言放到一起做了一个基准测试。

一般的基准测试无非是看看哪个编程语言最快,而这个研究还要看看谁消耗的能量最高。

其中的一个结果让人震惊,Python竟然比C慢71倍,消耗的能量居然是C的75倍!

这个研究是葡萄牙的一个研究所做的,他们用了一个叫做“The Computer Language Benchmarks Game”测试集。

这个测试集很有趣,既包括程序员熟悉的“二叉树遍历”,也包括“N体问题”这样的天体运动模拟,目的是尽可能多地覆盖到更多领域。

fa7337e7bff48a35d8df9dba61b2be80.png

对于程序的运行时间很好计算,记录下开始时间和结束时间,相减就出来了。

对于程序的能耗,他们使用了Intel的RAPL(Running Average Power Limit),这是一种硬件功能,可以监控CPU、内存、GPU能耗,然后通过API来访问。

整体的程序框架大概是这样:

for (i = 0 ; i < N ; i++){
  time_before = getTime (...);
  rapl_before (...);
  // 使用system系统调用来执行程序
  // 例如system("/usr/bin/python binarytrees.py")
  system(command);
  rapl_after (...);
  time_elapsed = getTime (...) - time_before ;
  ...
}

最终的结果是这样的(经过了标准化的处理):

在速度上,不出意料,C语言最快,以它为基准,Python是71.90,Lua最慢。

4616a824418149af6d47873ddcc8fbde.png

在能量消耗上,C语言最低,以它为基准,Python是75.88,Perl最差。

b6b36e7f3a9c9213707d43f1ff6a7cc5.png

在内存占用上,Pascal这门语言竟然排到了第一,C语言屈居第三。

1d238300cdf9f1b61adf2583151a44bd.png

从运行速度,能量消耗、内存使用这三项指标上都能看出C语言的王者之气。

运行速度最快的编程语言:C、Rust、C++、Ada、Java,在节能榜也名列前茅。

可以看出编译型的语言性能确实厉害,Java的虚拟机被优化得也非常强悍。

a76fca92b251ed4157e8d20c5381a908.png

而解释型语言PHP、Lua、Ruby、Python、Perl等就排名靠后了。

让人吃惊的是Lisp,执行速度靠前,消耗能量之少也名列前茅。

那么,这个结果的可信度如何呢?

The Computer Language Benchmarks Game测试集合有个特点:充分利用了编程语言的特性,致力于让程序运行得最快。

这在真正的实践中是不现实的,因为大部分程序员都不会这么写代码的。

所以研究团队找了一个叫Rosetta Code的测试集合,再次对结果进行验证。

175a7a3a304fba339e1c056b78bc2ec8.png

Rosetta Code的特点是是对同一个编程任务,有几百种编程语言的实现!

由于它的目标不是优化程序,而是为了展示不同编程语言的相似之处和不同之处,让学习者能快速地学习另外一种编程语言。

他们从中选了9个任务的代码,再次进行了测试。

2da007b514b16c625667e11374b28bfc.png

结果和之前差不多,C、Pascal、Ada、Rust、C++ 依然排在前面几位,Ruby、Perl、Python依然排在最后。

8f0da5557d9c50e7ba235fe5dd31a366.png

唯一的例外是Java,排名大幅下降,因为在Rosetta Code的实现中,大量使用了Java集合(如List和Set),而不是静态的数组,从而拖累了Java的性能。

总结

看完这个研究,你有什么感想?

我想说,如果你是一个环保主义者,觉得应该对气候变暖负责任,根据这个研究结果,那你一定得选择C语言来编程!c1b2930e91036979ef4eb8129172c075.png

但是呢,这个研究只关注编程语言在运行时的表现,它不考虑软件的编写成本、维护成本。

C语言和硬件密切相关,是个“低级”的高级语言,想写出好代码不容易。

想用它写出和Java、Python同样功能的程序,花费的时间要长得多,电脑开机的时间也要长得多,这么算下来,用C语言消耗的能量可能远远超过Java和Python。

对于系统级的软件和对性能要求高的软件,C、C++、Rust是不二之选,对于应用层的软件,需要快速实现多变的业务逻辑,还是选择Python、Java、JS、Ruby等编程语言吧,适合的才是最好的!

原论文链接:https://haslab.github.io/SAFER/scp21.pdf

全文完,觉得不错的话点个赞或者在看吧!

近期爆文

千万别去外企!

被哈佛扫地出门,他发明了让无数程序员痛不欲生的编程语言,获得了计算机最高奖!

这两个大龄程序员,打算搞垮一个世界软件巨头!

这两个程序员要花100万,彻底重写世界上最复杂的软件

世界上最大的盗版网站,遇到麻烦了!

美国的顶尖程序员,深夜都在狂玩儿这个游戏!

这个女生写的软件,解决了无数程序员最头疼的问题!

你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?

摆了个摊,日销930元,80后女产品经理不再焦虑了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值