为什么 C++ 编译速度比 Java 慢得多?

回答·9
最热
最新
  • 很多人一看到c++编译时间慢就高潮了,就开始从预处理,语法词法解析开始自以为是的分析,最后上升到抨击c++这门语言,正因为c++的语法复杂,所以才编译的这么慢! 我只想问你们一句话,决定编译时间的快慢的决定性因素是什么? 是优化!很多时候,优化占用的时间都在八九成,前端那些语法词法解析啥的,都是牛毛.那为什么优化要占用这么多时间?为了生成更高效的代码!如果你不想要高效代码,c++编译也可以很快.
  • C++的语法更复杂 C++的出现本来就是用来解决某一类问题而不是通用性问题
  • 就没人知道,相对于 c++的编译结果,Java 才编译了一半吗?
  • 因为C++的语法比Java更加复杂,并且编译器要做更多事情。譬如模板展开等等,还要做一些优化。而Java语法简单,而javac又几乎不做优化,自然快得多
  • java 实际运行的环境是 JDK/JRE,是 java 优化后的虚拟机环境,利用虚拟机环境进行可移植性操作。底层大部分调用的已封装的类库,如果在开发过程中遇到那种没有的类库,java 实际是需要调用 JNI 来调用三方类库或者自己用 C/C++来编译类库的。而 C++采用的汇编语言,是和机器打交道的,最终编译出来的是信号量,控制芯片与各个寄存器等原件的。java 可以看做是对多个已有的指令组合,而 C++是在自己造指令。两者都有各自的优势,java 更适合人的逻辑编程,C++在通样功能实现上体积小,毕竟 JVM 虚拟机还是挺大的,比如 java 开发网站应用,APP 应用高效,服务更完善,而 C++驱动编程,硬件编程占优势,体积小,稳定等,
  • C++是汇编语言
  • 也要看 makefile 的质量
  • 两者编程逻辑有所差异,C++语法相对复杂,因而相对而言,编译起来会耗时一些;但这不能作为两种语言优劣性的区别,两种语言均可以成为程序员优越的工具
  • C++ 编译器复杂度 = 操作系统复杂度