- 此问题在此处已有答案**:
Why does C++ compilation take so long?(15个答案)
2天前关闭。
我在谷歌上搜索了C和Java编译过程的区别,但是返回了C和Java语言的特性以及它们的区别。
我精通Java,但不精通C++。但我修复了C中的一些bug。根据我的经验,我注意到与Java相比,C总是花更多的时间来构建小的变化。
Why does C++ compilation take so long?(15个答案)
2天前关闭。
我在谷歌上搜索了C和Java编译过程的区别,但是返回了C和Java语言的特性以及它们的区别。
我精通Java,但不精通C++。但我修复了C中的一些bug。根据我的经验,我注意到与Java相比,C总是花更多的时间来构建小的变化。
6条答案
按热度按时间bogh5gae1#
在我的脑海中有一些高级的区别,其中一些是概括性的,应该加上前缀“经常......”或“一些编译器.... a.",但为了可读性起见,我将省略这些。
1wnzp6jl2#
Java将代码编译成字节码,由Java VM解释。C必须编译成目标代码,然后再编译成机器语言。因此,Java可能只编译一个类,而C目标文件必须与其他目标文件重新链接到机器代码可执行文件(或DLL)。这可能会使过程花费更长的时间。
zbdgwd5y3#
我不知道为什么您期望Java和C++的编译速度具有可比性,因为它们是具有完全不同的设计目标和实现的不同语言。
也就是说,需要记住的几个具体区别是:
1rhkuytd4#
一个使用了所有语言特性的C++程序本质上更难编译。一些类型的模板调用可以很容易地使要生成的代码量增加两倍或三倍。
7bsow1i65#
忽略很多细节,在Java中,你可以将.java文件编译成一个或多个.class文件,而在C++中,你可以编译.cc文件(或任何东西)源文件到.o文件,然后将.o文件链接到一起成为可执行文件或库。链接过程通常是致命的,特别是对于小的更改,因为链接的工作量大致与整个项目的大小成比例。(这是忽略增量链接器,它们是专门设计的,不会对小的更改表现得那么糟糕)
另一个因素是#include机制意味着每当你改变一个.h文件时,所有依赖它的.o文件都需要重新构建。在Java中,一个.class文件可以依赖于多个.java文件(例如:因为常量内联),但是在改变一个源文件需要重建许多其它源文件的情况下,这些“热点”往往少得多。
此外,如果您使用的是Eclipse这样的IDE,它一直在后台构建Java代码,所以当您告诉它构建时,它已经完成了大部分(如果不是全部)工作。
kiz8lqtg6#
Java将任何源代码编译成字节码,由JVM解释,由于这个特性,它可以在多个平台上使用。