2011-01-22 11 views
5

में शाखा विवरणों की भविष्यवाणी करने के लिए विशेषज्ञ ज्ञान प्रदान करना मुझे पता है कि कुछ सीपीयू पूर्व-प्राप्त करने के लिए कौन सा कोड तय करने का निर्णय लेते समय शाखा विवरणों की भविष्यवाणी करने का प्रयास करते हैं, मैं सोच रहा था कि सी # में उन शाखा भविष्यवाणियों में मदद करने या कड़ी मेहनत करने का कोई तरीका था या नहीं। (या सी ++)। एक उदाहरण यह जांचने में त्रुटि होगी कि अगर मुझे पता है कि स्टेटमेंट झूठा 99.9 99 99 99% समय लौटाएगा, तो मैं हमेशा सीपीयू को यह बताने के लिए कहूंगा कि उस शाखा को प्री-फ़ेचिंग उद्देश्यों के लिए कभी नहीं होने की उम्मीद है।सी # या सी ++

धन्यवाद।

+0

तुम क्यों महसूस करते हैं यह आवश्यक है: जीसीसी भी एक संकलक-विशिष्ट एक्सटेंशन __builtin_expect कहा जाता है आप शाखा भविष्यवाणी के बारे में अपनी मान्यताओं में हार्डकोड देता है कि समर्थन करता है? –

+3

आज माइक्रो-ऑप्टिमाइज़ेशन में जंगली चला गया हम मौजूद हैं .. – BrokenGlass

+0

@ चक्करता कुछ बार यह बहुत महत्वपूर्ण हो सकती है और कुछ प्रदर्शन वृद्धि दे सकती है। लेकिन अधिकांश ब्रांड नए सीपीयू के पास एक बड़े इतिहास कैश के साथ काफी अच्छी शाखा भविष्यवाणियां हैं। – Elalfer

उत्तर

5

मेरे सर्वोत्तम ज्ञान के लिए इस समस्या का कोई क्रॉस-प्लेटफ़ॉर्म समाधान नहीं है। मैं उम्मीद करता हूं कि सी # वीएम भविष्यवाणियों के इस तरह के अनुकूलन के लिए कुछ प्रकार के रनटाइम विश्लेषण करेगा, हालांकि मुझे इस तथ्य के लिए यह नहीं पता है।

सी/सी ++ के लिए, इसे अनुकूलित करने में सहायता के लिए कुछ प्लेटफ़ॉर्म-विशिष्ट टूल हैं। आप आमतौर पर कोड के लिए प्रोफ़ाइल निर्देशित अनुकूलक पा सकते हैं। मुझे एक तथ्य के बारे में पता है कि जीसीसी और जी ++ इसका समर्थन करते हैं, और यह नेट प्रोग्राम प्रदर्शन में काफी बड़ा अंतर डाल सकता है।

if (__builtin_expect(x == 0, 0)) { // Unlikely to occur 
    /* ... */ 
} 
+0

से पूरी तरह से बंद हो सकता हूं यह प्रश्न वर्णन करता है कि g ++ के साथ प्रोफ़ाइल-निर्देशित अनुकूलन कैसे करें: http://stackoverflow.com/ प्रश्न/4365980/कैसे के लिए उपयोग प्रोफ़ाइल निर्देशित-अनुकूलन-इन-जी – JaredC

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