मुख्य प्रश्न: हमारे दैनिक जीवन का सामान्य या यहां तक कि विशेष कार्यक्रम अनुकूलक हिस्सा क्यों नहीं हैं?पूरे कार्यक्रम अनुकूलन अब अधिक प्रचलित क्यों नहीं हैं?
मैं SuperCompilers पढ़ने के बाद इस बारे में सोचना शुरू कर दिया, एलएलसी के White paper है, जो करने के लिए "supercompiling" या metacompiling एक कार्यक्रम के स्रोत के अपने विधि पर चर्चा करता है (आम तौर पर) है कि मूल कार्यक्रम के रूप में ही कार्यक्षमता करता है एक तेजी से संस्करण को प्राप्त। अनिवार्य रूप से वे एक कार्यक्रम के निष्पादन के माध्यम से कदम और एक ही लक्ष्य भाषा में recompile। ऐसा करके, प्राकृतिक अनुकूलन होते हैं; उदाहरण के लिए, यदि इनपुट प्रोग्राम 100 आइटमों के सरणी का उपयोग करता है, तो सामान्य बाइनरी खोज फ़ंक्शन बाइनरी 100 आइटमों की एक सरणी खोजने के लिए विशिष्ट हो सकता है।
Partial Evaluation शायद एक अधिक संकीर्ण प्रकार का संपूर्ण प्रोग्राम अनुकूलन है, जहां प्रोग्राम के स्रोत को इनपुट के कुछ निश्चित सेट के आधार पर कम/मूल्यांकन किया जाता है जबकि रनटाइम पर मूल्यांकन किए जाने वाले अज्ञात इनपुट को छोड़ दिया जाता है। उदाहरण के लिए, एक सामान्य फ़ंक्शन x^y, यदि दिया गया है y = 5, को x^5 या शायद कुछ (x * x) * (x * x) * x में घटाया जा सकता है।
ऐतिहासिक पूरे कार्यक्रम अनुकूलन (मैं इन दो तकनीकों के अपने कच्चे विवरण के लिए माफी माँगता हूँ) इस तरह के दो से ऊपर भी स्मृति गहन प्रदर्शन करने के लिए है, लेकिन हमारे मशीनों के साथ किया जाएगा के रूप में स्मृति के gigs (या की तरह कुछ का उपयोग कर क्लाउड), हमने ओपन सोर्स आंशिक मूल्यांकनकर्ताओं और वसंत की तरह क्यों नहीं देखा है? मैंने कुछ देखा है, लेकिन मैंने सोचा होगा कि यह हमारी टूल श्रृंखला का एक नियमित हिस्सा होगा।
- क्या यह डर है (प्रोग्रामर बग पेश करने वाले उनके कोड के परिवर्तन से डरते हैं)?
- क्या यह इसके लायक नहीं है (यानी वेब ऐप्स के लिए बाधा I/O है, और इस प्रकार का अनुकूलन CPU समय सहेज रहा है)?
- क्या यह सॉफ्टवेयर है जो लिखने के लिए मुश्किल है ?
- या, की मेरी धारणा यह गलत है?
शक्तिशाली अनुकूलक * हर जगह हैं। मुख्य लाइन कंपाइलर्स पर स्थिर ऑप्टिमाइज़र न केवल एएसटी रीराइटिंग करता है, लेकिन जेआईटी कंपाइलर्स पर ऑप्टिमाइज़र केस विशेषज्ञता का उपयोग करता है। क्रांति नहीं हुई है क्योंकि ये चीजें बढ़ती जा रही हैं। – dmckee
क्या कंपाइलर/दुभाषिया अनुकूलन स्टैंड-अलोन टूल की आवश्यकता को पार करते हैं? व्याख्या की गई भाषाओं के मामले में मैंने देखा एक उदाहरण आंशिक रूप से उस प्रोग्राम के संकलित संस्करण को बनाने के लिए प्रोग्राम के स्रोत के साथ दुभाषिया स्रोत का मूल्यांकन कर रहा है। यह प्रभावी ढंग से (सैद्धांतिक रूप से) भाषा को समझने के सभी उपरि को खत्म करना चाहिए। –