我爱编程

Python真的比其他语言慢吗

2018-01-26  本文已影响0人  ferdinand_hx
python.jpeg

为什么Python会比其它语言慢?

Python是动态类型语言而不是静态类型语言。

这意味着在程序执行的时候,解释器不知道被定义的变量的类型。下图总结了一个C变量(我使用C作为编译语言的替代品)和一个Python变量之间的区别:


C和Python.png
/* c代码实例 */
int a =1; // 将整型数1赋值给a
int b = 2; // 将整型数2赋值给b
int c = a + b; // 调用binary_add<int,int>(a,b),并将结果分配给c

C编译器一开始就知道a和b是整数,直接调用两个整数添加的方法,返回C这个整数存到内存当中。整个代码就运行 完毕了。

# python代码实例
a = 1
b = 2
c = a + b

如上代码所示,Python运行完上述代码需要经过以下几个步骤:

大家从上述步骤不难看出,动态类型语言,任何操作都涉及到很多的操作,这是Python对数值操作比C慢的主要原因。

Python是解释型语言而不是编译型语言。

从上面我们看到了解释代码和编译代码之间的一个区别。优秀的编译器可以优化重复和不需要的操作,这使得它速度快。

Python的对象模型会导致内存效率较低

当我们想存储若干整数时,Python可能会使用list对象,而在C中,会使用基于某种缓冲区的数组。

比如最简单形式的NumPy数组是围绕C数组构建的Python对象,也就是说,它有一个指向值的连续缓冲数据区的指针,每一个指针指向一个Python对象,该对象又饮用其数据,如图所示:


Python.3png.png

从上图不难看出,如果进行顺序执行数据的操作,那么numpy将比python在存储和访问上更有效率。

Python效率这么低,为什么我们还要使用它?

开发人员的时间效率,一个py程序可能需要6s时间,而C可能只需要1s。但开发人员使用Python可能只需要10分钟就能完成这个程序。而使用C语言你可能需要1个小时或者更多。


从上面不难看出,可能对于吞吐量比较大,并发需求较低但软件,Python不太适合。但从系统管理到目前非常火热的机器学习领域,Python显然是非常合适的语言。当要求应用开发速度以及开发人员时间有限的情况下,使用Python无疑是非常好的一个选择!

好了,本篇文章就给大家介绍到这里,喜欢我到文章的朋友可以点击【关注】。欢迎大家留言交流。最后放上:

python之禅.png
上一篇 下一篇

猜你喜欢

热点阅读