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语言是换个环境

相关推荐
程序猿乐锅2 分钟前
【苍穹外卖|Day01】项目初识:从多模块结构到 OpenAPI 接口文档踩坑
java·spring·maven·mybatis
我不是懒洋洋3 分钟前
【C++】内存管理与模板(C++内存管理方式、new和delete的实现原理、malloc/free和new/delete的区别、函数模板、类模板)
c语言·开发语言·c++·青少年编程·visual studio
雪的季节4 分钟前
Qt多窗口架构设计需求简介
开发语言·qt
李白的天不白4 分钟前
针对你遇到的 Client.Timeout exceeded 问题,我判断是防火墙拦截了 HTTPS 流量
java
linweidong8 分钟前
Java 后端开发面试 50 个高频易混淆知识点详解
java·spring boot·spring·spring cloud·面试·mybatis·spring事务
码语智行8 分钟前
应用启动和关闭监听器功能分析
java·spring boot
Resky08189 分钟前
什么是 Spring IOC:倒过来让容器帮你 new,而不是你到处 new
java·spring
AutumnWind04209 分钟前
【JDK动态代理源码梳理】
java·后端·spring
韦胖漫谈IT10 分钟前
面向对象 vs 函数式背后的思维差异
开发语言
Xin_ye1008613 分钟前
C# 零基础到精通教程 - WPF 深度专题:3D 图形与视觉增强
开发语言·c#·wpf