में निष्पादित बाइटकोड की संख्या की गणना कैसे करें मैं एमआईटी की युद्धकोड प्रतियोगिता में प्रवेश करने जा रहा हूं। प्रवेशकर्ता उन कार्यक्रमों को लिखते हैं जो एक-दूसरे से लड़ने वाले रोबोटों को नियंत्रित करते हैं। पकड़ यह है कि आपके रोबोट एक मोड़ में बाइटकोड की एक निश्चित मात्रा को निष्पादित करने तक सीमित हैं (पिछले साल यह प्रति 10000 था)। अब, एक सरल पाश जावा
तरह(int i=0; i<100; i++){
// do nothing
}
उपयोग करता है, उनके सॉफ्टवेयर के अनुसार, लगभग 400 बाईटकोड (संभवतः तरह (2 बाईटकोड की जाँच के लिए मैं प्लस 2 incrementing बाईटकोड के लिए कुछ करता है, तो मैं < 100) * 100 = 400 बाइटकोड) तो हमें बहुत तंग कोड लिखना है। इसलिए, जैसा कि मैंने कुछ अलग नेविगेशन एल्गोरिदम को आजमाया है, यह महत्वपूर्ण है कि मैं यह समझने में सक्षम हूं कि मेरा कोड कितना बाइटकोड उपयोग कर रहा है - मैं यह कैसे कर सकता हूं?
(यह संभव है - वे यह करते हैं - मुझे यकीन है कि कैसे नहीं! इसके अलावा, उन्हें किसी भी तरह से खेलने में आने से जेआईटी को रोकना चाहिए। मुझे पता है कि प्रत्येक रोबोट एक अलग थ्रेड में चलाया जाता है, इसलिए मैं ' मीटर यकीन जवाब थ्रेड प्रवंचना मैं के बारे में पता नहीं है किसी प्रकार का होता है)
यदि आपको निष्पादित निर्देशों की संख्या से मापा जा रहा है, तो आप शायद बाइटकोड हाथ से लिखना चाहेंगे। जावा कंपाइलर अंधेरे से ऑप्टिमाइज़ेशन के बिना बाइटकोड में आपके स्रोत का अनुवाद करता है, जिसका अर्थ है कि इसमें बहुत सारे अनावश्यक निर्देश हैं। आम तौर पर यह एक समस्या नहीं होगी क्योंकि वीएम उन्हें अनुकूलित करता है, लेकिन यह आपकी निर्देश गणना को बढ़ाएगा। आप बाइटकोड सीधे लिखकर बहुत बेहतर कर सकते हैं। – Antimony