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

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

所谓“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的源码,而且我负责的是编译器前端,后端不归我管。不过希望这一堆东西能对题主有帮助吧……

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

  1. python在中国的发展-为什么Python发展这么快,有哪些优势?

    Python的发展可以用飞速来形容了,2018五月,Python在编程语言排行榜的排名首次超过了Java,要知道Java是多年来的霸主.虽然到六月Java又重回宝座,但是Python的进步之快大家有目 ...

  2. python 运行java jar包,从Python运行javajar文件的最快方法?

    这是我的问题.我有一个现有的.jar文件,我必须在我的程序中使用.不过,这个程序是用Python编写的.在 由于我的程序需要很长时间才能运行(大型开发语料库上的命名实体标记器),所以我使用cProfi ...

  3. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)

    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...

  4. python 预编译加速_让Python代码运行更快的最佳方式

    Python因其强大.灵活且易于使用等特性,而赢得了声誉.这些优点使其在各种各样的应用程序.工作流程和领域中得到了广泛应用.但是就语言的设计,也就是它天然的解释能力还有它的运行时的动态性而言,Pyth ...

  5. python3性能还低吗_谁说Python性能差的?-- 让python比awk快 (3)

    在(2)中,提到了python字符串慢在了split函数.那既然已经知道这个bottleneck,现在就优化下. 初步思路是用C来定制一个提取第n列数的模块,然后替换我们的Python版本(1)中的s ...

  6. 程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...

    点击上方"Python大本营",选择"置顶公众号" python大本营  IT人的职业提升平台 Python到底还能给人多少惊喜?笔者最近看到了这两天关于Pyt ...

  7. 人生苦短快用python_人生苦短,快用 Python

    1. 写在前面 从Ruby 语言到Go 语言,目前终于开始使用Python 进行编码. 对于职场新手 ,可能首先会提出一个问题:难道Ruby /Go 不香吗?难道Python 比其他两个语言好?其实都 ...

  8. python与seo实战课程下载_黑帽seo教程:SEO快排套路与SEO快排Python应用编程技术(零基础)...

    黑帽seo教程:SEO快排套路与SEO快排Python应用编程技术(零基础) 授课内容简介 两个模块:「SEO套路」和「SEO应用编程」 「SEO套路」模块,分 "域名.内容&模板. ...

  9. 教你怎样用Python画了一棵圣诞树,快来学习

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT入门 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何 ...

  10. 初学Python到月入过万最快的兼职途径(纯干货)

    1.兼职薪资,附行哥工资单 2.兼职门槛,附学习知识清单 3.兼职途径,附入职考核过程 4.行哥的兼职感受 答应行友的第一篇赚钱干货推文来啦,行哥第一个在读书期间通过兼职赚到的10w+收入,这也是初学 ...

最新文章

  1. 使用Facade模式分析
  2. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
  3. vue--卡片层叠 组件 开发小记
  4. 定义ComboBox(下拉列表)组件垂直滚动条的样式。
  5. 脑电分析系列[MNE-Python-15]| Epochs数据可视化
  6. ImportError: DLL load failed: 找不到指定的模块
  7. c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?
  8. css 让div 的高度和屏幕的高度一样
  9. key value vue 输出_vue注意事项总结(一)
  10. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)...
  11. 第一章:T-SQL查询与编程基础
  12. Laravel.com 中国镜像、中文站点
  13. 最强数据集集合:50个最佳机器学习公共数据集丨资源
  14. 语音芯片播报方案选型补充说明
  15. shell中设置IFS,使用自定义分割符
  16. linux刻录windows光盘启动,如何在 Windows / Ubuntu / macOS 上刻录 Ubuntu 启动光盘
  17. MFC 利用opencv实现视频播放
  18. MapGuide源码分析----MapGuide服务器源码分析
  19. mysql安装包msi_win10系统,mysql-installer-community-5.7.19.0.msi安装
  20. ORACLE 游标 cursor的基本用法

热门文章

  1. windows环境中利用NMake工具编译连接C++源代码
  2. 剑指offer——06旋转数组的最小数字(Python3)
  3. Java程序员常用工具集
  4. ComboBox的数据联动
  5. 求三角形最大面积(DP)
  6. 关于近期对Lucene.Net应用研究学习的总结
  7. 怎样把pdf转换成word
  8. 以下用于数据存储领域的python第三方库是-『爬虫四步走』手把手教你使用Python抓取并存储网页数据!...
  9. 儿童学python编程入门用途-干货 | 看了此文,家长就知道为啥要让孩子学Python?...
  10. python经典算法小程序-Python爬虫系列之微信小程序逆向某优选爬虫签名算法!厉害...