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

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具