2013-07-17 2 views
5

, निम्नलिखित कोड का टुकड़ा, एकल के एक तीन आयामी सरणी के एक ट्रेवर्सल, निष्पादन दक्षता के मामले में विचार करें यह सोचते हैं कि process1() और process2() समय की समान लंबाई ले निष्पादित करने के लिए:.NET कंपाइलर - क्या नेस्टेड लूप ऑप्टिमाइज़ेशन अंतर्निहित हैं?

float arr[mMax,nMax,oMax]; 

for (m = 0; m < mMax; m++) 
    for (n = 0; n < nMax; n++) 
    for (o = 0; o < oMax; o++) 
     { process1(arr[m,n,o]); } 

for (o = 0; o < oMax; o++) 
    for (n = 0; n < nMax; n++) 
    for (m = 0; m < mMax; m++) 
     { process2(arr[m,n,o]); } 

अब, यह है कि जाना जाता है सी # पंक्ति-प्रमुख संरचनाओं के रूप में .NET ढांचे में सरणी व्यवस्थित करता है। किसी भी अनुकूलन के बिना मैं मानता हूं कि पहला लूप दूसरे की तुलना में बहुत तेज निष्पादित करेगा।

सवाल यह है: क्या सीएलआर के जेआईटी या cs.exe/vb.exe कंपाइलर्स इस तरह के लूप का पता लगाते हैं और अनुकूलित करते हैं, शायद घोंसले की पुनरावृत्ति करते हैं, या मुझे हमेशा संभावित प्रदर्शन हिट के लिए अपने गार्ड पर रहना चाहिए, खासकर शब्दों में अगर मैं लूप को समानांतर करने की कोशिश करता हूं तो क्या हो सकता है?

+2

सामान्य स्थिति में आपको संकलक अनुकूलन – oakio

उत्तर

3

यह एक प्रकार का अनुकूलन है जिसे आप एक सी या सी ++ कंपाइलर में उम्मीद कर सकते हैं। यह वास्तव में वर्तमान है, बिल्ड 2013 सत्र के this video में इस सटीक अनुकूलन का उल्लेख किया गया था। सी/सी ++ प्रोग्रामर को लक्षित करते समय, सी # प्रोग्रामर के लिए भी बहुत कुछ शामिल है। स्मृति उपप्रणाली की बाधाएं उतनी ही प्रासंगिक हैं। वास्तव में यह सुनिश्चित नहीं है कि ऑप्टिमाइज़ेशन ने इसे वीएस2013 में बनाया है, आईआईआरसी में देशी कंपाइलर को भी धीमा करने में समस्या थी।

लेकिन नहीं, जिटर अनुकूलक बहुत सख्त बजट पर काम करता है। बहुत अधिक समय व्यतीत करने से ध्यान देने योग्य स्टार्टअप देरी हो जाती है और निष्पादन रोक देता है ताकि यह इस प्रकार के विश्लेषण को बर्दाश्त नहीं कर सके। सी # प्रोग्रामर को खुद यह करना है।

+0

पर आशा नहीं करनी चाहिए वीडियो वीडियो आकर्षक है; इसे जोड़ने के लिए धन्यवाद। मेरे पास इंप्रेशन है, हालांकि, सी # कंपाइलर विकास समूह सी/सी ++ विकास समूह के साथ निकटता से एकीकृत नहीं है ताकि हम यह सुनिश्चित कर सकें कि उन अनुकूलन पाइपलाइन में हैं। क्या आप उस के साथ सहमत करेंगें? –

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