मैं सी # (मूल रूप से एक मल्टीट्रैक संपादक) में एक डीएसपी अनुप्रयोग लिख रहा हूं। मैं इसे विभिन्न मशीनों पर काफी समय से प्रोफाइल कर रहा हूं और मैंने कुछ 'उत्सुक' चीजों को देखा है।एप्लिकेशन के दौरान सबसे अनुकूलित कोड उत्पन्न करने के लिए .NET JIT कंपाइलर को मजबूर करना
मेरी होम मशीन पर, प्लेबैक लूप का पहला भाग उपलब्ध समय का लगभग 50% -60% लेता है, (मुझे लगता है कि यह जेआईटी अपनी नौकरी कर रहा है), फिर बाद के लूप के लिए यह नीचे चला जाता है एक स्थिर 5% खपत के लिए। समस्या यह है कि, यदि मैं धीमे कंप्यूटर पर एप्लिकेशन चलाता हूं, तो पहला रन उपलब्ध समय से अधिक लेता है, जिससे प्लेबैक बाधित हो जाता है और आउटपुट ऑडियो को गड़बड़ कर दिया जाता है, जो अस्वीकार्य है। उसके बाद, यह 8% -10% खपत तक चला जाता है।
पहले भाग के बाद भी, एप्लिकेशन समय-समय पर (प्रत्येक 2 सेकंड अधिक या कम) कुछ समय लेने वाली दिनचर्या को कॉल करता रहता है, जिससे स्थिर 5% खपत 20% -25% की बहुत कम चोटियों का अनुभव करती है। । मैंने देखा है कि अगर मैं थोड़ी देर के लिए आवेदन चलाता हूं तो ये चोटियों में भी 7% -10% की कमी आएगी। (मुझे यकीन नहीं है कि यह जेआईटी कोड के इन हिस्सों को दोबारा बनाने के कारण है)।
तो, मुझे जेआईटी के साथ एक गंभीर समस्या है। हालांकि आवेदन बहुत धीमी मशीनों में भी अच्छी तरह से व्यवहार करेगा, ये 'संकलित तूफान' एक बड़ी समस्या होने जा रहे हैं। मैं इस मुद्दे को हल करने का तरीका जानने का प्रयास कर रहा हूं और मैं एक विचार के साथ आया हूं, जो कि सभी 'समझदार' दिनचर्या को एक विशेषता के साथ चिह्नित करना है जो एप्लिकेशन को स्टार्ट-अप के दौरान पहले 'निचोड़' करने के लिए कहेंगे , इसलिए जब उन्हें वास्तव में आवश्यकता होती है तो वे पूरी तरह से अनुकूलित हो जाएंगे। लेकिन यह केवल एक विचार है (और मुझे यह बहुत पसंद नहीं है) और मुझे आश्चर्य है कि पूरी समस्या का बेहतर समाधान है या नहीं।
मैं यह जानना चाहता हूं कि आप क्या सोचते हैं।
(NGEN आवेदन एक विकल्प, मुझे पसंद है और सभी JIT अनुकूलन मैं प्राप्त कर सकते हैं चाहता हूँ नहीं है।)
संपादित करें:
मेमोरी की खपत और कचरा संग्रहण किक भी कोई समस्या नहीं है, मैं कर रहा हूँ प्लेबैक के दौरान ऑब्जेक्ट पूल और मेमोरी की अधिकतम चोटी का उपयोग 304 Kb है।
यदि आप कहते हैं तो यह मदद करेगा ** क्यों ** एनजीईएन एक विकल्प नहीं है; समस्या को समझना आधे नौकरी है ... –
एनजीएन-आईएनजी में क्या जेआईटी अनुकूलन उपलब्ध नहीं हैं? – Will
@Marc: मैं ऐप को आखिरी उपाय के रूप में एनजेन करता हूं, लेकिन यदि कोई बेहतर समाधान उपलब्ध है तो मैं इसका उपयोग नहीं करना चाहूंगा। – Trap