performance - Efficiency of C vs Assembler -
निम्नलिखित कोडांतरक कोड कितना तेज़ है:
shl ax, 1
निम्न सी कोड बनाम:
num = num * 2;
मैं कैसे पता भी कर सकता हूं?
आपका असेंबली संस्करण तेज़ हो सकता है, धीमा हो सकता है क्या आपको लगता है कि यह जरूरी है तेजी से?
मंच पर, 2 से कुछ गुणा करने के लिए बहुत कुछ तरीके हैं। मैं एक संकलक को जोड़ कुल्हाड़ी, कुल्हाड़ी
करने की अपेक्षा करता हूं, जो कि आपके < Code> shl क्योंकि इसमें संभावित रूप से संग्रहीत स्थिर (आपके मामले में '1') शामिल नहीं है।
इसके अलावा, एक लंबे समय के लिए, एक्स 86 प्लेटफार्म पर स्थिरांक द्वारा चीजों को गुणा करने का पसंदीदा तरीका बदलाव नहीं था, बल्कि एक ली ऑपरेशन (जब संभव हो) था। उपरोक्त उदाहरण में यह होगा कि
लीआ ईएक्स, [ईएक्स * 2]
। (गुणा करके 3 को lea eax के माध्यम से किया जाएगा, [eax * 2 + eax]
)
शिफ्ट आपरेशनों में विश्वास किसी भी तरह से "तेज" नए लोगों के लिए एक अच्छी पुरानी कहानी है , जो आज लगभग कोई प्रासंगिकता नहीं है और, हमेशा की तरह, आपके कंपाइलर (यदि यह अद्यतित है) के अधिकांश समय में, अंतर्निहित हार्डवेयर प्लेटफ़ॉर्म के बारे में बेहतर जानकारी है जो शिफ्ट ऑपरेशन के लिए सरल प्यार वाले लोगों की तुलना में अधिक है।
Comments
Post a Comment