हमारा निर्माण कष्टप्रद धीमा है। यह एक जावा सिस्टम है जो Ant के साथ बनाया गया है, और मैं विंडोज एक्सपी पर अपना चल रहा हूं। हार्डवेयर के आधार पर, इसे पूरा करने में 5 से 15 मिनट लग सकते हैं।मैं फ़ाइल I/O कैसे प्रोफाइल कर सकता हूं?
मशीन पर समग्र प्रदर्शन मीट्रिक देखने के साथ-साथ निर्माण के समय के साथ हार्डवेयर मतभेदों को सहसंबंधित करने से संकेत मिलता है कि प्रक्रिया I/O बाध्य है। यह भी दिखाता है कि प्रक्रिया लेखन से बहुत अधिक पढ़ाई करती है।
हालांकि, मुझे निर्धारित करने का कोई अच्छा तरीका नहीं मिला है, जो फ़ाइलों को पढ़ा या लिखा जा रहा है, और कितनी बार। मेरा संदेह यह है कि हमारे कई सबप्रोजेक्ट्स और कंपाइलर के बाद के इनवोकेशन के साथ, बिल्ड कई बार उपयोग की जाने वाली लाइब्रेरी को दोबारा पढ़ रहा है।
कुछ प्रोफाइलिंग टूल क्या हैं जो मुझे बताएंगे कि कौन सी फाइलें किस फाइल के साथ कर रही हैं? नि: शुल्क अच्छा है, लेकिन आवश्यक नहीं है। के शीर्ष पर लगभग सभी डिस्क गतिविधि के पढ़ रहा था और पुस्तकालयों की फिर से पढ़ने, "rt.jar" और अन्य पुस्तकालयों में से JDK के प्रतियों के साथ:
Process Monitor, as suggested by Jon Skeet, का उपयोग करते हुए मैं अपने संदेह की पुष्टि करने में सक्षम था सूची। मैं अपने द्वारा उपयोग की जाने वाली सभी पुस्तकालयों को पकड़ने के लिए काफी बड़ी रैम डिस्क नहीं बना सकता, लेकिन रैम डिस्क कट पर "सबसे गर्म" पुस्तकालयों को बढ़ाना लगभग 40% का निर्माण करता है; स्पष्ट रूप से, विंडोज़ फाइल सिस्टम कैशिंग एक अच्छी नौकरी नहीं कर रही है, भले ही मैंने विंडोज़ को इसके लिए अनुकूलित करने के लिए कहा है।
मैंने देखा एक दिलचस्प बात यह है कि JAR फ़ाइल पर विशिष्ट 'पढ़ा' ऑपरेशन केवल कुछ दर्जन बाइट है; आम तौर पर इनमें से दो या तीन होते हैं, इसके बाद फ़ाइल में कई किलोबाइट्स छोड़ते हैं। यह थोक पढ़ने के लिए उपयुक्त नहीं प्रतीत होता है।
मैं फ्लैश ड्राइव पर अपने तीसरे पक्ष के पुस्तकालयों के सभी के साथ और अधिक परीक्षण करने जा रहा हूं, और देखें कि इसका क्या प्रभाव है।
एक त्वरित प्रश्न एरिक्सन, आपने यह कैसे पता लगाया कि ProcessMonitor के साथ कितने बाइट पढ़ रहे हैं? मुझे Windows XP –
के साथ हमारे निर्माण को प्रोफ़ाइल बनाने का प्रयास करने में एक ही समस्या है, उदाहरण के लिए, अभी ऑफसेट: एन बाइट्स, लंबाई: एम बाइट्स, और इसी तरह के बारे में बताएं। –