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

相关推荐
wear工程师几秒前
synchronized 锁升级:多数人还在背 JDK8 的答案,偏向锁早在 JDK18 就没了
java·面试
荣码5 分钟前
LangGraph多步工作流:Agent不够用的时候,我踩了4个坑
java·python
影寂ldy9 分钟前
C# WinForms 窗体继承
开发语言·c#
是小李呀11 分钟前
Java集合扩容机制解析:ArrayList与HashMap底层原理及性能差异
java
SimonKing11 分钟前
FreeLLMAPI:24 家厂商、128 个模型、1 个 Key智能切换所有可用的模型
java·后端·程序员
小白学大数据11 分钟前
无库无捷径,PyTorch 手写完整 Transformer 大语言模型 LLM
开发语言·pytorch·语言模型·transformer
阿pin11 分钟前
Java随笔-JVM内存模型
java·开发语言·jvm·内存模型
AI 大模型学习不踩坑30 分钟前
Harness 架构原理与工程实践详解
java·人工智能·神经网络·机器学习·计算机视觉·架构
虚心的百褶裙43 分钟前
JavaScript性能优化
开发语言·javascript·性能优化