प्रदर्शन के लिए सिस्टम टाइप करें


11

क्या (स्थिर) प्रकार के सिस्टम मौजूद हैं जो कार्यक्रमों की प्रदर्शन विशेषताओं को औपचारिक बनाने का प्रयास करते हैं? मैं इस तरह के प्रयासों को खोजने के लिए प्रतीत नहीं कर सकता।

चूंकि प्रोग्राम के बारे में बयान देने के लिए प्रोग्रामर के शस्त्रागार में टाइप सिस्टम (एक) सबसे शक्तिशाली उपकरण हैं, और चूंकि ऐसे कई उदाहरण हैं जिनमें प्रदर्शन महत्वपूर्ण है, यह कल्पना करने के लिए दूर-दूर तक प्रतीत नहीं होता है कि प्रयास किए गए थे एक प्रकार की प्रणाली बनाएं जो कार्यक्रमों के भंडारण और रनटाइम विशेषताओं के बारे में कम से कम कुछ बयान करने का प्रयास करता है।


1
आपके प्रदर्शन के बारे में आपका टाइप सिस्टम क्या कहेगा if condition then expensive_operation else cheap_operation?
ज़िक

मुझे पता है कि कोड (और समाप्ति) की सबसे खराब स्थिति जटिलता का स्वचालित रूप से अनुमान लगाने के लिए अमूर्त व्याख्या का उपयोग करने में विकास हुआ था। आपको इसमें रुचि हो सकती है ...
बकुरीयू

पूरी तरह से संबंधित नहीं है, लेकिन फिर भी: kernelnewbies.org/FAQ/LikelyUnlikely लिनक्स में कर्नेल / gcc संकलक कुछ पथों को अनुकूलित करने की संभावना / संभावना मैक्रोज़ हैं। जैसेif (likely(operation_went_fine)) { // Do something } else if (unlikely(error_occured)) { // Do something else }
अमेजनड्रीम जूल

C में अस्थिर और पंजीकृत कीवर्ड दिमाग में आते हैं।
मटनज़

जवाबों:


6

आप WCET या कार्यक्रम की जटिलता से संबंधित होने के लिए पर्याप्त परिष्कृत एक प्रकार की प्रणाली की कल्पना कर सकते हैं । फिर, मुद्दा ध्वनि प्रकार विश्लेषक (या चेकर) बनाने का है - यानी टाइपिंग के नियम - जो कि संभव बनाने के लिए, और इसे यथोचित रूप से उपयोगी बनाने के लिए इसे कुशलतापूर्वक लागू करना है।

अधिकांश प्रकार की प्रणालियां अभ्यास में गणना करने के लिए त्वरित रूप से सरल हैं (कम से कम कार्यक्रमों के उचित सेट के लिए एक मानव डेवलपर मैन्युअल रूप से लिख सकता है)।

कुछ शैक्षणिक प्रोग्रामिंग भाषाओं (जैसे AGDA ) में बहुत परिष्कृत प्रकार की प्रणालियाँ हैं जो ट्यूरिंग-पूर्ण हैं, इसलिए उनका संकलक एक बड़ी (शायद अनंत) राशि ले सकता है।

(यदि मैं अच्छी तरह से समझता हूं, पेरिस में LIP6 में Jérémie Salvucci की पीएचडी प्रगति पर है, तो आपके प्रश्न से काफी संबंधित है; मैंने उसे इसके बारे में एक ईमेल भेजा है; आप क्षेत्रों और प्रकारों की तलाश कर सकते हैं ...)।

लेकिन चावल की प्रमेय और हाल्टिंग समस्या के बारे में पता होना चाहिए । टाइप सिस्टम हमेशा चांदी की गोली नहीं हो सकती है जो आप चाहते हैं कि वे हो (पुरानी नहीं चांदी की बुलेट बुक देखें)।


4
WCET इस संदर्भ में "सबसे खराब मामला निष्पादन का समय" है (अगर मेरे अलावा किसी और के मामले में)
क्लैस वैन स्केलेनवेन

9
अगाडा, कोक, एपिग्राम, गुरु, इसाबेल, आदि की भरोसेमंद रूप से टाइप की गई भाषाएं ट्यूरिंग-पूर्ण नहीं होने से हॉल्टिंग प्रॉब्लम, राइस के प्रमेय और दोस्तों को "हल" करती हैं। या तो निर्माण द्वारा (अर्थात यह अनंत लूप / नॉन-टर्मिनेटिंग रिकर्सन लिखना संभव नहीं है), यह आवश्यक करके कि सभी प्रोग्राम इस तरह से लिखे जाएं कि टर्मिनेशन चेकर टर्मिनेशन को प्रमाणित कर सके, या प्रोग्रामर को प्रस्तुत करने के लिए जरूरी हो। मशीन-जांच योग्य समाप्ति प्रमाण।
जोर्ग डब्ल्यू मित्तग

3

यह एक प्रकार की प्रणाली बनाने के लिए संभव प्रतीत होता है जो प्रकारों के प्रदर्शन की विशेषता को वर्गीकृत करता है(उदाहरण के लिए "सीरियल एक्सेस के लिए तेज़ / धीमा," रैंडम एक्सेस के लिए तेज़ / धीमा "," मेमोरी कुशल / अक्षम ")। उन लक्षणों को सार प्रकार को पदानुक्रम में इस तरह रखा जा सकता है कि उनसे अधिक ठोस प्रकार विरासत में मिले। हालांकि, उन प्रकारों का उपयोग करने वाले किसी भी कार्यक्रम का प्रदर्शन उस तरह पर निर्भर करेगा जिस तरह से वे वास्तव में उपयोग किए जाते हैं / एक्सेस किए जाते हैं। प्रोग्राम के बारे में स्टेटमेंट बनाने के लिए टाइप सिस्टम के लिए, उन प्रकारों का उपयोग (एक्सेस) उन प्रकारों के रूप में प्रतिनिधित्व करना होगा। इसका मतलब होगा अंतर्निहित नियंत्रण संरचनाओं (जैसे / छोरों के लिए) का उपयोग करना और इसके बजाय उन प्रकारों का उपयोग करना जो उन्हें लागू करते हैं। इसलिए पदानुक्रम एक सार सीरियल-एक्सेस प्रकार और अवरोही सूची-सीरियल-एक्सेस, ट्री-सीरियल हो सकता है। -अत्यधिक प्रकार और इतने पर।उपयोग की दक्षता तब कम से कम आंशिक रूप से एक दूसरे से इन प्रकारों के संयोजन और अनुप्रयोग द्वारा व्यक्त की जा सकती है।

हास्केल जैसी कार्यात्मक भाषा में - जिसका वैसे भी लगभग कोई नियंत्रण संरचना नहीं है - यह मुझे काफी व्यावहारिक और प्रवर्तनीय लगता है। जावा में, हालांकि, ऐसी प्रणाली बहुत कम प्राप्त होती है ( कार्यान्वयन से इतना अधिक नहीं है जितना कि परिणाम की प्रवर्तनीयता / भरोसेमंदता से है)।

हास्केल हमें पहले से ही निश्चित रूप से यह बताने की अनुमति देता है कि कोई कार्यक्रम कितना शुद्ध है और सील बक्से के भीतर विशेष गतिविधियों को सीमित करने के तरीके प्रदान करता है। चूंकि हास्केल में समानांतरवाद / संगामिति टाइप प्रणाली के माध्यम से लागू की जाती है , इसलिए यह तर्क दिया जा सकता है कि यह पहले से ही वहां का हिस्सा है (आप क्या चाहते हैं)। इसके विपरीत, अनिवार्य भाषाएं (यहां तक ​​कि जावा जैसे सांख्यिकीय रूप से टाइप किए गए) कोडर को कई, इस पर किसी भी प्रयास को हटाने के कई तरीके प्रदान करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.