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

相关推荐
SimonKing2 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean2 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven973 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55112 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河13 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程15 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅17 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者18 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺18 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端