c++、java/python语言有什么区别?为什么c++更快?

C++程序的执行过程包括:

.cpp

bash 复制代码
预处理.i、编译.s、汇编.o、链接(可执行文件)、加载(内存)、程序执行(cpu)。
bash 复制代码
预处理:将头内容文件插入当前文件,展开宏,删除注释
编译:将c++源代码 翻译成 汇编语言
汇编:将汇编语言-》二进制机器码
链接:将不同文件整合成一个可执行文件,符号解析,地址分配,重定位,链接静态动态库,生成可执行文件;
静态链接:复制库代码:把需要的库函数代码复制到可执行文件中;生成独立的可执行文件,不依赖外部库文件
动态链接:不复制代码:只在可执行文件中记录需要哪个动态库;
         运行时加载:程序启动时由动态链接器加载所需的库;
重定位:
		地址解析:找到所有未确定地址的实际位置
		代码修正:把占位符地址替换为实际地址
		符号绑定:将符号引用连接到符号定义
bash 复制代码
例:
cpp
// file1.cpp
int global = 100;

// file2.cpp
extern int global;

int main() {
    return global;  // 需要重定位:global的实际地址
}

C++将程序编译成汇编语言最终编译成成机器命令码 ,cpu直接执行机器码,因此高效;
优点是执行起来快,缺点是对环境有依赖;

换个操作系统/CPU架构/字长/库版本,就需要重新编译;
因为:

不同操作系统上,系统调用API不同,汇编语言不兼容,汇编语言格式不同操作系统是不同的,目标文件格式不同,因此需要重新编译;

2、JAVA

java语言执行过程:

bash 复制代码
java源代码-字节码-JVM加载- 解释执行 + JIT编译 - 优化的机器码

Java语言首先将程序翻译成字节码,之后程序去执行字节码,执行过程中再由翻译器将字节码翻译成机器码去执行,因此执行过程较慢,但好处是换个环境也能执行,不依赖环境

python语言是换个环境

相关推荐
栗子叶3 分钟前
Java对象创建的过程
java·开发语言·jvm
Amumu1213811 分钟前
React面向组件编程
开发语言·前端·javascript
有一个好名字12 分钟前
力扣-从字符串中移除星号
java·算法·leetcode
IT=>小脑虎12 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
wjs202415 分钟前
C 标准库 - `<float.h>》详解
开发语言
zfj32122 分钟前
CyclicBarrier、CountDownLatch、Semaphore 各自的作用和用法区别
java·开发语言·countdownlatch·semaphore·cyclicbarrier
2501_9167665427 分钟前
【JVM】类的加载机制
java·jvm
Sag_ever28 分钟前
Java数组详解
java
张np29 分钟前
java基础-ConcurrentHashMap
java·开发语言
早日退休!!!30 分钟前
进程与线程的上下文加载_保存及内存映射
开发语言