前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C与Python的不同在于速度

C与Python的不同在于速度

作者头像
py3study
发布2020-01-08 11:31:34
5070
发布2020-01-08 11:31:34
举报
文章被收录于专栏:python3

这篇文章我在一个叫做The Unix Geek的博客中看见,刚好最近对这方面比较感兴趣,就顺手翻了过来,可以探讨探讨。

简介

Python是个非常流行的解释型脚本语言。C是一个非常流行的编译语言。由于其编译的性质,导致C一般比Python要快,但是它是更底层的。相对的,Python编程更加快速和简单。译者注:在目前最权威的TIOBE编程语言排行榜上,Python和C语言分处榜上第6和第2的高位,在脚本语言和编译语言中分别坐着第二把交椅(第一把交椅分别是PHP和Java)。

问题在于,Python程序(在没有输入的情况下)运行时所额外花费的时间相对C而言是否更加划算,以及运行时所用的时间是否比编程时间更加重要。

系统程序

我决定建立一个简单的程序,该程序可以处理以下公式的计算:

{ x + y = 14 { x^2 + y^2 = 100

我很快用Python写了一遍,找到了答案。然后,我将其翻译成C语言。我知道,在C语言中的同一程序会花费比Python更多一些的代码,但是这并非是我所注意的问题。在继续之前,让我们看看代码:

Python: x = 1 while x <= 14: y = 14 - x print str(x) + "|" + str(y) if x**2 + y**2 == 100: print "match" x = x + 1

C: #include (<)stdio.h(>)

int main() { int x, y, t;

for (x = 1; x <= 14; x++) { y = 14 - x; printf("%d|%d\n", x, y); if ((x*x) + (y*y) == 100) printf("match\n"); } return 0; }

我总是听说C语言永远是最快的语言之一。在命令端口运行这两个程序,我并没看出这两个的运行速度有任何差别。所以我打开Ubuntu的命令端口,并输入如下代码:

time ./a.out (time指令,紧跟着可以脱离time指令而单独运行的普通指令,运行指令并计时——很明显,这里的测试对象是C程序。)我得到0.001秒real time(真实用时),而user time(用户用时)和system time(系统用时)都是0。

接下来是Python:

time python system.py 结果有些吓人:0.017秒real time,0.012秒user time,0.004秒system time。

当然了,real time的差别毕竟只有16毫秒,不过在长时间运行大量运算的大系统下这个差别就很明显了。

百万程序

我决定将这个设想付诸现实。我写了另一个程序,这个程序将0到1000000之间的所有整数,包括0,依次print输出。当然这和我之前提到的大量运算的情况还是不同的,不过还是给了计算机比较多一些需要print的内容。

Python: i = 0 while i (<) 1000000 print i i = i + 1

C: #include (<)stdio.h(>)

int main () { int i; for (i = 0; i <> printf ("%d\n", i); return 0; }

然后是测试结果:

C: real 0m24.625s user 0m0.652s sys 0m2.240s

Python: real 0m29.805s user 0m1.984s sys 0m1.812s

结论

我承认,每个语言都有其优势和弱点。但从以上结果看来,我只会在像上面这些小程序这样快捷的编程中,或为C程序建立原型的时候才会用Python,而在运行花费时间更重要的任务中,我无疑会选择C语言。

译者:其实这篇文章中用于测试的程序编写的不是很严谨。在原博客上,这篇文章有不少评论都表示说,虽然他们承认C是比较快,但是这样的测试方法并没有充分利用两种语言的效率最优化机制。不过,具体测试是否准确并非是我所关注的。重点是,一个Java程序员,或者一个C程序员,或者别的什么语言的开发人员,在怎样的情况下,怎样的职业需求,会促使他们学习并使用新的语言呢?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档