python和c的比较(内存和效率)

内存
在Alex视频课程中得知Python中:

a=2

b=a

a=3

该过程中的内存储存方式为:

1、先再内存中开栈存储2这个数据的空间

2、a指向数据为2的内存空间地址

3、b=a 此时b指向2的内存空间的地址

4、a=3 内存中开栈存储3这个数据的空间

5、此时a=3中,a重新指向数据为3的内存地址

总结:Python是动态语言,变量只是对象的引用
静态存储方式
所谓静态存储方式是指在程序编译期间分配固定的存储空间的方式。
该存储方式通常是在变量定义时就分定存储单元并一直保持不变,
直至整个程序结束。全局变量,静态变量等就属于此类存储方式。
动态存储方式
所谓动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。
动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放。
典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。

效率
1、运行效率:C++ >> Python
Python代码和C++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Python最终转换出来的CPU指令会比C++ 多很多。
首先,Python东西比C++多,经过了更多层,Python中甚至连数字都是object !!!
其次,Python是解释执行的,和物理机CPU之间多了解释器这层,而C++是编译执行的,直接就是机器码,编译的时候编译器又可以进行一些优化。
所以运行效率上没得比。
编译执行,顾名思义,要先编译再执行,这里需要有一个编译器,来将我们的代码全部编译成机器代码,然后进行执行。因为先整体进行编译,所以这里会生成编译后的机器代码。

解释执行,则是需要一个解释器,它会将我们的一句句解释成机器代码来执行,可以认为是,解释一句,执行一句。在这个过程中,不会生成中间文件。

通过对比发现,编译执行,只需要编译一次,多次运行。而解释执行的话,没运行一次程序,都要经过解释器的解释过程。



 针对优缺点,可以从以下几个方面分析。

从启动效率来看,解释执行不需要进行编译操作,而编译执行,要经过编译过程。解释执行启动速度更快。

从运行效率来看,因为编译执行只需要编译一次,以后再运行就无需编译,而解释执行每次都要经过解释过程,所以编译执行效率更高。

从内存使用方面来看,编译执行需要生成编译后的机器码文件,而解释执行时逐句解释执行,所以解释执行对内存占用更少。

从跨平台的角度来看,因为解释执行每次可以根据不同的平台进行解释,例如js在linux和windows都可以运行,而C语言在windows下编译后的文件,只能在windows下才行执行。



 对于大型项目来说,比较注重运行效率,核心代码一般都是采用编译执行的语言。而对于一些简单的操作,可以考虑使用解释执行的语言。

2、开发效率:Python >> C++
Python一两句代码就搞定的东西,C++往往要写一大堆。用C++解析下Json你就明白了,很可能好几天过去了,你还在调bug,刚调好bug又内存泄漏了,再试试Python你会爽得不要不要的。
开发效率上,Python要比C++快很多,所以说:“人生苦短,我用Python”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值