हाल ही में, मेरे एक सहयोगी ने इन पंक्तियों के साथ कुछ कहा: "एक ही स्रोत कोड से निर्मित सर्वर द्वारा उत्पादित लगातार एपीके (निष्पादन योग्य) समान नहीं हो सकते हैं"। इस चर्चा के लिए संदर्भ यह था कि निर्माण एक्स पर किए गए क्यूए भी वाई बनाने के लिए लागू होते हैं, जो एक ही स्रोत कोड से उसी बिल्ड सर्वर (उसी तरह कॉन्फ़िगर किया गया) द्वारा किया गया था।एक ही स्रोत कोड उपज से काम करता है कार्यात्मक रूप से अलग निष्पादन योग्य?
मुझे लगता है कि जेनरेट किए गए निष्पादन योग्य विभिन्न कारकों (जैसे विभिन्न टाइमस्टैम्प) के कारण समान नहीं हो सकते हैं, लेकिन सवाल यह है कि वे कार्यात्मक रूप से भिन्न हो सकते हैं।
एकमात्र परिदृश्य, जिसे मैं सोच सकता हूं, जिसमें एक ही स्रोत कोड विभिन्न कार्यक्षमता उत्पन्न कर सकता है बहु-थ्रेडिंग समस्या का है: बहु-थ्रेडेड कोड के गलत सिंक्रनाइज़ेशन के मामले में, अलग-अलग पुन: क्रम/अनुकूलन क्रियाएं संकलन समय पर प्रदर्शन इस खराब सिंक्रनाइज़ कोड को प्रभावित कर सकता है और इसके कार्यात्मक व्यवहार को बदल सकता है।
मेरे प्रश्न हैं:
- यह सही है कि लगातार एक ही स्रोत कोड से ही बिल्ड सर्वर द्वारा किया जाता बनाता कार्यात्मक अलग हो सकता है?
- यदि # 1 सत्य है, तो क्या ये अंतर गलत सिंक्रनाइज़ किए गए बहु-थ्रेडेड कोड तक सीमित हैं?
- यदि # 2 गलत है, तो अन्य भाग क्या बदल सकते हैं?
किसी भी संबंधित सामग्री से लिंक की सराहना की जाएगी।
आमतौर पर, जेनरेट बाइट कोड _same_ होता है यदि एक ही संस्करण में एक ही निर्माण उपकरण का उपयोग उसी स्रोत कोड के निर्माण के लिए किया जाता है। जब तक ... ठीक है, जब तक कि आप कुछ मेटाफाइल में कुछ बिल्ड टाइमस्टैम्प डालने की तरह कुछ चाल नहीं कर रहे हैं जो परिणामस्वरूप जेएआर में उत्पन्न और पैक हो जाते हैं और आप यह भी पढ़ते हैं कि आपके कोड के साथ मेटाफाइल किसी विशेष टाइमस्टैम्प पर कुछ और कर रहा है। – Seelenvirtuose
मुझे इस मुद्दे में एक आम आदमी बनना है और इसलिए बहुत गंभीर गलती और गलतफहमी हो सकती है। लेकिन मेरी सरल तार्किक सोच यह है: यदि कोई स्रोत कोड समय-समय पर एक टाइमस्टैम्प प्रक्रिया को संसाधित कर सकता है, तो कोड की कुछ शाखाओं में यह क्यों नहीं हो सकता है कि समय पहले या बाद में पूर्व निर्धारित है या नहीं और निर्माता अलग-अलग चीजें करता है परिणामों के मुताबिक? –