2009-08-04 13 views
19

क्या कोई अध्ययन या बेंचमार्क सेट है जो प्रदर्शन को प्रदर्शित करता है डीसीसी में सख्त-अलियासिंग निर्दिष्ट करने के कारण गिरावट (या अन्य कंपेलरों में समतुल्य)?-फनो-सख्त-एलियासिंग का प्रदर्शन प्रभाव

+1

सटीक डुप्लिकेट: http://stackoverflow.com/questions/754929/strict-aliasing – GManNickG

+7

मुझे उस चर्चा पर कोई प्रदर्शन संख्या नहीं मिली। मैं कुछ परीक्षा परिणाम/डेटा की तलाश में हूं। क्या मैं कुछ भुल गया? – Carlos

+0

एफडब्ल्यूआईडब्ल्यू, स्वीकृत उत्तर में कोई प्रदर्शन संख्या नहीं है। – peterchen

उत्तर

19

यह कंपाइलर से कंपाइलर से बहुत भिन्न होगा, क्योंकि विभिन्न कंपाइलर्स आक्रामकता के विभिन्न स्तरों के साथ इसे लागू करते हैं। जीसीसी इसके बारे में काफी आक्रामक है: सख्त एलियासिंग को सक्षम करने से यह संकेत मिलता है कि पॉइंटर्स जो "स्पष्ट रूप से" मानव के बराबर हैं (जैसा कि foo* a; bar * b; b = (foo*)a;) उपनाम नहीं कर सकते हैं, जो कुछ बहुत ही आक्रामक परिवर्तनों की अनुमति देता है, लेकिन स्पष्ट रूप से गैर सावधानी से तोड़ सकता है लिखित कोड इस कारण से ऐप्पल का जीसीसी डिफ़ॉल्ट रूप से सख्त एलियासिंग अक्षम करता है।

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

मेरे अनुभव में, सख्त एलियासिंग के प्रदर्शन प्रभाव को ज्यादातर लूप इनवेरिएंट कोड गति के साथ करना पड़ता है, जहां टाइप जानकारी का उपयोग यह साबित करने के लिए किया जा सकता है कि इन-लूप लोड सरणी को फिर से चालू नहीं कर सकता है, जिससे उन्हें लूप से बाहर खींच लिया जाना चाहिए। YMMV।

+5

एलएलवीएम का दृष्टिकोण मेरे लिए सही एक जैसा लगता है – Spudd86

10

मैं आपको अनुभव से क्या कह सकता हूं (पीएस 3 पर एक बड़ी परियोजना के साथ इसका परीक्षण करने के बाद, पावरपीसी एक आर्किटेक्चर है कि इसके कारण कई रजिस्ट्रार वास्तव में एसए से बहुत लाभ उठा सकते हैं) यह है कि आप जिन अनुकूलन को देखने जा रहे हैं आम तौर पर बहुत स्थानीय (दायरे के अनुसार) और छोटे होने जा रहे हैं। एक 20 एमबी निष्पादन योग्य पर यह शायद 80kb .text खंड (= कोड) से छीन लिया गया था और यह सब छोटे scopes & loops में था।

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

+1

क्योंकि कोड आकार == गति? आपका पीएस 3 उदाहरण न तो यहां और न ही वहां है। यह कैसे चला गया? – Eloff

+0

मैं कहां कहूं कि यह तेज़ है? यह हो सकता है - यह बिल्कुल असंभव नहीं है कि संभावित भार/स्टोर छोड़े जाते हैं - और किसी भी मामले में एक स्मृति निष्पादन योग्य स्मृति मशीन पर बेहतर है। तो यह यहाँ है, और यह भी वहाँ है। – nielsj

+0

ओपी ने प्रदर्शन प्रभावों के लिए कहा और आपने केवल कोड आकार पर चर्चा की। फिर आपने एक आईपीएसओ तथ्य तर्क दिया कि आपको एक बड़ा प्रदर्शन अंतर क्यों नहीं दिखाई देगा। फिर आपने लिनक्स कर्नेल को "सबोपेटिमल स्टेटस सर्वश्रेष्ठ" कहा। मुझे लगता है कि आप देख सकते हैं कि आपको डाउनवोट क्यों मिला। – Eloff

5

यहां 2004 में आयोजित अध्ययन का एक लिंक है: http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1124&context=ecetr, दूसरों के बीच, कोड प्रदर्शन पर सख्त अलियासिंग प्रभाव। चित्रा 2.5 3% से 10% के सापेक्ष सुधार दिखाता है। प्रदर्शन में ख़राबी की

शोधकर्ताओं ने 'स्पष्टीकरण:

विधानसभा कोड का निरीक्षण से, हमने पाया है कि गिरावट रजिस्टर आबंटन एल्गोरिथ्म का प्रभाव है। जीसीसी ग्राफ ग्राफिंग रजिस्टर आवंटक [2, 3] लागू करता है। सख्त एलियासिंग के साथ, चर के लाइव रेंज लंबे हो जाते हैं, जिससे उच्च रजिस्टर दबाव और 'स्पिलिंग होती है। अधिक रूढ़िवादी एलियासिंग के साथ, वही चर उनके (छोटे) लाइव श्रेणियों के अंत में स्मृति स्थानान्तरण भी करते हैं।

[2] पीटर बर्गनर, पीटर डाहल, डेविड एनगेब्रेसेन, और मैथ्यू टी। ओकेफ। हस्तक्षेप क्षेत्र स्पिलिंग के माध्यम से कोड कम करें। प्रोग्रामिंग भाषा डिजाइन और कार्यान्वयन, पृष्ठ 287-295, 1997.

[3] प्रेस्टन ब्रिग्स, कीथ डी कूपर और लिंडा टॉर्ज़न पर सिग्प्लान सम्मेलन में। ग्राफ़ रंग पंजीकरण आवंटन में सुधार। प्रोग्रामिंग भाषाएं और सिस्टम पर एसीएम लेनदेन, 16 (3): 428-455, मई 1 99 4।

+0

क्या आप किसी भी अध्ययन के बारे में जानते हैं जो ऑप्टिमाइज़ेशन के मूल्य को देखता है जिसे सख्त एलियासिंग द्वारा अनुमति दी जाएगी * जिसे 'प्रतिबंधित' क्वालीफायर * के माध्यम से भी हासिल नहीं किया जा सकता है? – supercat

+0

मुझे कोई नहीं पता, क्या आप किसी भी अनुकूलन के बारे में जानते हैं जो इन आवश्यकताओं को पूरा करेगा? – SzymonPajzert

+0

'प्रतिबंध' क्वालिफ़ायर को एक कंपाइलर को बताने के लिए प्रभावी रूप से उपयोग नहीं किया जा सकता है कि स्थैतिक-अवधि ऑब्जेक्ट्स उपनाम नहीं होंगे, और कुछ मामलों में प्रोग्रामों में एक ही प्रकार के एकाधिक संभावित-संबंधित पॉइंटर्स हो सकते हैं जो एक-दूसरे को उपनाम कर सकते हैं। टाइप-आधारित एलियासिंग उन मामलों में कुछ अनुकूलन की अनुमति देगा जो अन्यथा उपलब्ध नहीं होंगे। आईएमएचओ, ऐसे मामलों को बेहतर क्वालीफायर जोड़कर बेहतर तरीके से संभाला जा सकता था (उदाहरण के लिए उन मामलों में 'रजिस्टर' क्वालीफायर की अनुमति दें जहां ऑब्जेक्ट को बाहरी कोड के संपर्क में लाया जा सकता है, लेकिन जो व्यवहार कर सकता है जैसे कि पॉइंटर के माध्यम से एक्सेस किए जाने पर उन्हें नया पता मिलता है)। – supercat

संबंधित मुद्दे