language agnostic - कुछ युक्तियां जो एक प्रोसेसर को कोड अनुकूलित करने के लिए करता है?




language-agnostic optimization (3)

मैं कोड की पुनर्रनिर्देश जैसी चीज़ों की तलाश कर रहा हूं जो एक प्रोसेसर के मामले में कोड को तोड़ सकता है


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

यहां समस्या समझाते हुए एक अच्छा पृष्ठ है और यह जावा मेमोरी मॉडल के साथ कैसे निपटा गया है।

http://gee.cs.oswego.edu/dl/cpj/jmm.html


विकिपीडिया में ऑप्टिमाइज़ेशन तकनीक की काफी व्यापक सूची है


हां, लेकिन वास्तव में आपका प्रश्न क्या है?

हालांकि, चूंकि यह एक दिलचस्प विषय है: चूंकि कम्पाइलर और प्रोसेसर कोड अनुकूलित करने के लिए उपयोग करते हैं, उस कोड में दौड़ परिस्थितियों के अभाव में कई प्रोसेसर के साथ कोड को तोड़ना नहीं चाहिए। इसे अनुक्रमिक स्थिरता की गारंटी कहा जाता है: यदि आपके कार्यक्रम में कोई दौड़ की स्थिति नहीं है, और सभी डेटा को एक्सेस करने से पहले ठीक से लॉक किया गया है, तो कोड व्यवहार करेगा जैसे कि इसे क्रमिक रूप से निष्पादित किया गया था।

हर्ब सटर का एक बहुत अच्छा वीडियो यहां इस बारे में बात कर रहा है:

http://video.google.com/videoplay?docid=-4714369049736584770

सभी को यह देखना चाहिए :)







processor