c+和python哪个快-C/C++比python快是什么意思?

这几个问题在编译原理和算法设计与分析这两门课程里是讲的。正好这几天在做新的编程语言项目,手机打字挺麻烦我就随便扯两句吧……

先扔概念:一般来说一门语言的执行过程是:词法分析器将语言分词,语法分析器建立语法树,语义分析器按顺序遍历语法树并产生什么自定义的中间语言,以上内容称为编译器前端。接下来是生成汇编代码和代码优化,称为编译器后端。

所谓“C比Python快”我觉得姑且理解成是说完成同一目标的C代码和Python代码,点击编译运行之后C能更快地出结果。要更深入解释解释就得去学编译原理了。目前编译器前端的方法还算成熟和通用,各语言也不在这一块区分运行速度。重点是编译器后端。一个典型案例是,老程序员都知道一句话是“Java比C跑的慢”,原因在于Java编译器是先产生中间代码,而C则是直接面向汇编。而现在也有论调说Java与C在服务器跑的时候性能差距不大,甚至也有Python性能已经在逐步靠近C,这说明各大语言厂商也在努力去做优化,真跑起来可能差别不大。

Python相比于C家族(C,C++,Java,原谅我把Java挂进来233)这种现在可以算传统的语言,不同点一是:生成字节码交由解释器执行;二是:一切皆class的弱类型。这导致它不可能采用和C类似的后端。所以问题出在后端上。对于同一个算法,一方面语言性质上的不同使得编译产生的汇编结果也不同,从而导致速度上的区分,像Python这种本身运行于解释器的语言再经过一层解释器转汇编很可能会拖慢运行速度;另一方面,优化策略也会影响执行速度。

Python的解释器也有使用多种语言写成的版本,例如用C写的叫CPython也就是最原始标准的Python,还有Python写的Python叫pypy等等。当然写到这大家可能觉得跟编译器的语言也有关系,可实际上Python本身更适合Python本身的特性,所以pypy在表现上并不输于CPython。所以编译原理不愧是大学最难的课之一啊……

不过关于解释器原理啥的再更具体的我就没法说了,毕竟我只是一个本科生,还没读过CPython的源码,而且我负责的是编译器前端,后端不归我管。不过希望这一堆东西能对题主有帮助吧……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值