在本文中,我们将了解为什么 C 语言代码比 Python 运行得更快。
Guido Van Rossum开发了Python,这是最著名的编程语言之一。Python 因其清晰的语法和简单的代码而在开发人员中很受欢迎,即使对于新手也是如此。对于那些刚刚开始编程职业生涯的人来说,学习Python是非常有利的。他们可以使用 Python 编程培训、博客、视频、模块和数千种其他资源来了解这种流行语言的各个方面。完成后,您将能够进行现代开发活动,例如GUI开发,网页设计,系统管理,复杂的金融交易或计算,数据科学,可视化等等。
Python比C慢,因为它是一种解释型语言。
因此,需要更多真实的 CPU 指令来执行给定的语句。
您可以通过将数字 1 添加到变量或将其与给定值进行比较来验证变量的值是否在 Python 代码中,以查看它是否小于、大于或精确等于该值。
不同之处在于,Python代码不会被CPU立即执行,而是被解释。
就性能而言,这让世界变得不同。
虚拟计算机的另一个名称是“字节码解释器”。
解释代码总是比实际的机器代码慢,因为它需要更多的指令来实现指令,而不是执行实际的机器指令。
考虑表达式 x += 1。在英特尔 CPU 中,寄存器增量是延迟为 1 的单次操作,倒数吞吐量为 1/3。
换句话说,它是指英特尔处理器可以提供的最快 CPU 指令。
在 Python 中,这个 x += 1 是如何实现的?
要理解这一点,你必须首先了解Python在内部是如何工作的。
Python 的内部组件包括一个分词器、一个词法分析器、一个字节码生成器和一个字节码解释器 -
生成后,字节码通常缓存在内存中。
因为您不必对 Python 已经看到的代码重复标记化、词法分析和字节码生成过程,所以这可以提高速度。
因此,与其在每次循环 while 循环时都经历标记化、词法分析和字节码创建过程,我们可以继续将字节码传递给字节码解释器。
这不是更快吗?不,实际上不是。
尽管使用缓存字节码更快,但它的执行或操作速度不如机器代码快。
运行代码的真正 CPU 不是虚拟计算机。
编译的UCSD Pascal与当时的其他编译语言不同,没有编译为汇编语言。相反,它被编译成p代码。
因此,当您想到“编译的Pascal程序”时,就会想到p-Code。如果你喜欢Java或Python,并且想假装你想出了新的东西,请使用“字节码”。
此外,Python 还包括“编译的 Python”的概念,它指的是由分词器、词法分析器和字节码生成器处理的 Python 代码,以创建准备好提供给字节码解释器(AKA Python 虚拟机)的缓存字节码。
它是一个包含 Python 源代码的 ASCII 文本文件,当您看到带有 extension.py 的文件时。
PYthon,编译是扩展名为“.pyc”的文件所代表的。
尽管如此,虚拟计算机仍会执行创建的代码。
一旦程序被构建出来,它还没有完全转换为本机代码,直到它被转换为它所设计的平台的本机二进制CPU指令。
这通常涉及编写汇编代码、将其传递给汇编程序以及让汇编程序创建特定于平台的目标文件,而不是使用字节码。
在程序连接到平台运行时之前,它尚未准备好使用。运行时可以提供运行时服务,例如动态对象加载,并构建代码将在其中执行的环境。在编译的 C 中,存在运行时。已编译C++具有运行时。
在本文中,我们了解了为什么 C 语言代码执行比 Python 更快的不同原因。