这个问题下,单纯讨论语言本身的效率无意义,一定要将测试代码所使用的环境(编译器、虚拟机等)描述出来。因为环境不同,同样代码的表现差距就很大。

通常情况下,Python 使用 CPython 解释器,而 C++ 使用 GCC / Clang / VC++ 等编译器。

那么这个问题就变成了:

使用同样算法和逻辑书写的Python代码和C++代码,分别用 CPython 和 GCC 执行/编译,在 同样的机器下,在Windows x64 (Linux/Unix等) 系统下运行——

为什么 CPython 执行 此Python代码 比 直接执行 GCC 编译 此C++代码 后的程序 效率要低许多?

那么这个问题的回答就是,因为 CPython 解释器 执行的 Python 代码比 直接执行 GCC 编译后的代码 多了一层(多层)抽象,这层抽象产生的开销(解释开销),在特定环境(如题主给出的环境)下是不容忽视的。

至于这个开销怎么节省,可以通过:

1. 将Python代码编译为字节码并存储(编译为.pyc或者.pyo),在以后的运行(这次运行结束以后)时不会从源代码重新编译为字节码;(节省从源代码到字节码的开销)

2. 使用 PyPy 等 使用 JIT 技术的 Python 实现。JIT 技术可以使程序在运行时转换为机器码,直接执行机器码比每次都从字节码解释执行要省时省力。(节省从字节码解释执行的开销)

请注意,一门语言可以实现为解释的,也可以实现为编译的,直接讨论语言的类型,解释型和编译型只是指在通常情况下人们对这门语言实现方式的默认看法。讨论语言效率必须要与语言的实现相联系。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐