जावा में बहुत सारे विवरणों पर चमकते हुए, आप एक या अधिक .class फ़ाइलों में .java फ़ाइलों को संकलित करते हैं। सी ++ में आप .cc फ़ाइलों में .cc (या जो भी) स्रोत फ़ाइलों को संकलित करते हैं, और उसके बाद .o फ़ाइलों को निष्पादन योग्य या लाइब्रेरी में एक साथ जोड़ते हैं। लिंकिंग प्रक्रिया आमतौर पर आपको मार देती है, खासकर मामूली परिवर्तनों के लिए क्योंकि लिंकिंग के लिए काम की मात्रा आपके पूरे प्रोजेक्ट के आकार के लगभग आनुपातिक है।(यह वृद्धिशील लिंकर्स को अनदेखा कर रहा है, जिन्हें विशेष रूप से छोटे बदलावों के लिए बुरी तरह व्यवहार करने के लिए डिज़ाइन किया गया है)
एक अन्य कारक यह है कि # अंतर्निहित तंत्र का अर्थ है कि जब भी आप एक .h फ़ाइल बदलते हैं, तो सभी .o फाइलें जो निर्भर करती हैं इसे पुनर्निर्मित करने की जरूरत है। जावा में, एक .class फ़ाइल एक से अधिक .java फ़ाइल (उदाहरण के लिए: निरंतर इनलाइनिंग की वजह से) पर निर्भर हो सकती है, लेकिन इन "हॉट स्पॉट्स" में बहुत कम है, जहां एक स्रोत फ़ाइल को बदलने के लिए कई अन्य स्रोत फ़ाइलों को होना आवश्यक है पुनर्निर्माण किया।
इसके अलावा, यदि आप ग्रहण जैसे आईडीई का उपयोग कर रहे हैं तो यह हर समय पृष्ठभूमि में अपना जावा कोड बना रहा है, इसलिए जब तक आप इसे बनाने के लिए कहें तो इसे पहले से ही अधिकतर (अगर पूरी तरह से नहीं किया जाता है)।
स्रोत
2010-01-19 17:13:25
यहां आधा जवाब पढ़ें: http://stackoverflow.com/questions/318398/why-does-c-compilation-take-so-long –
यह एक क्यूओआई (कार्यान्वयन की गुणवत्ता) मुद्दा है। कुछ सी ++ कंपाइलर्स "प्रीकंपिल्ड हेडर" लागू करते हैं, जो बहुत अधिक तेज़ी से निर्माण करता है। –
वही प्रश्न http://stackoverflow.com/questions/318398/why-does-c-compilation-take-so-long –