Python:运行效率慢5个原因
简介:Life is short,you need Python。一门编程语言的效率通常有两层意思,一方面是指开发效率,即程序员完成编码所需要的时间;另一方面是运行效率,即计算任务所需要的时间。编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的。不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率。运行效率缓慢的原因:Python是动态语言,造成运行时的不确定性影响运行效率。Py
简介:Life is short,you need Python。一门编程语言的效率通常有两层意思,一方面是指开发效率,即程序员完成编码所需要的时间;另一方面是运行效率,即计算任务所需要的时间。编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的。不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率。
运行效率缓慢的原因:
-
Python是动态语言,造成运行时的不确定性影响运行效率。
-
Python是解释执行,不支持JIT(just in time compiler)
-
Python中一切皆对象,每个对象都需要维护引用计数,增加额外的工作。
-
Python GIL,全局解释器锁导致无法实现真正并发。
-
垃圾回收机制,会中断正在执行的程序,造成所谓的顿卡。
Python是动态语言
动态语言是一类在运行时可以改变其结构的语言,如新的函数、对象、代码可以被引入,已有的函数可以被删除或其他结构上的变化等,该类语言更具有活性,但是不可避免的因为运行时的不确定性也影响运行效率。数据的比较和转换类型的开销很大,每次读取、写入或引用一个变量,都要检查类型。很难优化一种极具动态性的语言。Python的许多替代语言之所以快得多,原因在于它们为了性能在灵活性方面作出了牺牲。
Python是解释执行
相比于C语言编译性语言编写的程序,Python是解释执行语言,其运行过程是Python运行文件程序时,Python解释器将源代码转换为字节码,然后再由Python解释器来执行这些字节码。其每次运行都要进行转换成字节码,然后再由虚拟机把字节码转换成机器语言,最后才能在硬件上运行,与编译性语言相比,其过程更复杂,性能肯定会受影响。
Python中一切都是对象
Python是一门面向对象的编程语言,其设计理念是一切皆是对象,如数字、字符串、元组、列表、字典、函数、方法、类、模块等都是对象,包括代码,每个对象都需要维护引用计数,因此,增加了额外工作,影响了性能。
Python GIL
GIL是Python最为诟病的一点,因为GIL,Python中的多线程并不能真正的并发,即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode就会尝试线程的切换,因此,影响Python运行效率。
垃圾回收
Python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡,影响运行效率。
微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!
更多推荐
所有评论(0)