के लिए फोर्स लूप अनलोल करें क्या विशिष्ट लूप को अनलॉक करने के लिए क्लैंग को बताने का कोई तरीका है?क्लैंग: विशिष्ट लूप
उत्तर के लिए गुगलिंग मुझे कमांड लाइन विकल्प देता है जो पूरे संकलक को प्रभावित करेगा और एक लूप नहीं।
जीसीसी --- Tell gcc to specifically unroll a loop के लिए एक समान सवाल ही नहीं है --- लेकिन जवाब बजना के साथ काम नहीं करता है।
विकल्प 1 वहाँ का सुझाव दिया:
#pragma GCC optimize ("unroll-loops")
चुपचाप ध्यान नहीं दिया जा रहा है। वास्तव में
#pragma GCC akjhdfkjahsdkjfhskdfhd
भी चुपचाप अनदेखा किया जाता है।
विकल्प 2: एक चेतावनी में
__attribute__((optimize("unroll-loops")))
परिणाम:
warning: unknown attribute 'optimize' ignored [-Wattributes]
अद्यतन
joshuanapoli एक अच्छा समाधान कैसे टेम्पलेट metaprogramming और सी के माध्यम से पुनरावृति करने के लिए प्रदान करता है + लूप बनाने के बिना +11। निर्माण संकलन समय पर हल किया जाएगा जिसके परिणामस्वरूप बार-बार रेखांकित शरीर होता है। हालांकि यह वास्तव में सवाल का जवाब नहीं है, यह अनिवार्य रूप से एक ही चीज़ प्राप्त करता है।
यही कारण है कि मैं जवाब स्वीकार कर रहा हूं। हालांकि, यदि आपको पता है कि मानक सी लूप (for
, while
) का उपयोग कैसे करें और इसे अनलोल करने के लिए मजबूर करें - कृपया ज्ञान हमारे साथ साझा करें!
आमतौर पर, संकलक के पास एक बहुत अच्छा विचार है जब यह लूप को अनलॉक करने के लिए उपयुक्त होता है और जब यह एक अच्छा विचार नहीं है।वह विशेष मामला क्या है जिसे आप हल करने की कोशिश कर रहे हैं जहां यह लागू नहीं होता है? –
यह * बल * अनलोलिंग नहीं हो सकता है, लेकिन '__attribute__ ((गर्म)) 'कोशिश करने लायक हो सकता है। –
@ मैट्स पीटरसन मैं लूप अनोलिंग के लाभ को स्पष्ट रूप से मापना चाहता हूं। हाथ से लिखित अनलोल वास्तव में कोड को 3 बार गति देता है, लेकिन संकलक इसे समझ नहीं पाता है। – CygnusX1