1 पॉइंट द्वारा GN⁺ 2025-12-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • C/C++ कंपाइलर ऑप्टिमाइज़ेशन को केंद्र में रखने वाला 25-दिवसीय Advent Calendar परियोजना
  • 1 दिसंबर से 25 दिसंबर तक हर दिन ब्लॉग पोस्ट और वीडियो के ज़रिए एक-एक ऑप्टिमाइज़ेशन केस पेश किया जाएगा
  • हर पोस्ट में लागू होने का समय, assembly व्याख्या और गैर-लागू होने की स्थिति तक का विस्तार से विवरण शामिल है
  • x86-64 केंद्रित, लेकिन 64-बिट और 32-बिट ARM architecture भी कुछ हद तक शामिल
  • कंपाइलर के काम करने के तरीके को समझना चाहने वाले डेवलपर्स के लिए यह उच्च शैक्षणिक मूल्य वाली श्रृंखला है

Advent of Compiler Optimisations 2025 परियोजना अवलोकन

  • करीब एक साल की तैयारी के बाद शुरू किया गया यह प्रोजेक्ट, दिसंबर के महीने में हर दिन एक नया कंपाइलर ऑप्टिमाइज़ेशन केस साझा करता है
    • 12 दिसंबर से 25 दिसंबर तक हर दिन एक ब्लॉग पोस्ट और एक वीडियो पोस्ट किया जाता है
    • प्रत्येक सामग्री C या C++ code पर आधारित होकर कंपाइलर द्वारा किए जाने वाले रोचक ऑप्टिमाइज़ेशन पर चर्चा करती है
  • प्रत्येक ऑप्टिमाइज़ेशन में लागू होने की शर्तें, assembly code की व्याख्या, और जब यह लागू नहीं होता—इन सबका विस्तार से वर्णन किया गया है
    • यह सिर्फ साधारण code तुलना नहीं, बल्कि वास्तविक कंपाइलर व्यवहार का विश्लेषण है

तकनीकी दायरा

  • लो-लेवल आर्किटेक्चर-विशिष्ट ट्रिक्स से लेकर हाई-लेवल ऑप्टिमाइज़ेशन तकनीकों तक व्यापक रूप से कवर किया गया है
    • मुख्यतः x86-64 पर केंद्रित, लेकिन कुछ सामग्री में 64-बिट और 32-बिट ARM से संबंधित भाग भी हैं
  • कंपाइलर के आंतरिक कामकाज और code generation process को समझने के लिए एक व्यावहारिक संसाधन के रूप में तैयार किया गया है

सहभागिता और देखने का तरीका

परियोजना का महत्व

  • लगभग एक साल की तैयारी के बाद तैयार हुआ यह बड़ा निजी परियोजना, कंपाइलर की सूक्ष्मता और efficiency को समझने की मंशा से शुरू किया गया
  • लक्ष्य यह है कि डेवलपर्स कंपाइलर ऑप्टिमाइज़ेशन के वास्तविक काम करने के तरीके समझें और कोड लिखते समय उनका उपयोग कर सकें—एक शिक्षणीय प्रयास के रूप में
  • लेखक चाहते हैं कि “कंपाइलर कितना आश्चर्यजनक हो सकता है, यह सीखने का आनंद” वे सबके साथ बाँट सकें

Matt Godbolt परिचय

  • शिकागो में रहने वाले C++ डेवलपर, जो Hudson River Trading में कार्यरत हैं
  • Two’s Complement पॉडकास्ट के सह-होस्ट
  • Mastodon और Bluesky पर सक्रिय
  • ब्लॉग सामग्री Creative Commons BY-NC 3.0 Unported लाइसेंस के तहत उपलब्ध/वितरित है

1 टिप्पणियां

 
GN⁺ 2025-12-03
Hacker News राय
  • Matt के compiler optimization पर नज़र डालने के बाद, मैंने उनके साथ किया गया यह interview भी देखना अच्छा रहेगा
    मुझे जिस बात पर यक़ीन हुआ है, वह यह है: जिस abstraction level पर आप सहज हों, उसी पर काम करें, लेकिन उसके नीचे की परतों को भी समझें
    उदाहरण के लिए, अगर आप C programmer हैं, तो आपको यह समझना चाहिए कि C runtime operating system के साथ कैसे interact करता है। सभी details जानना ज़रूरी नहीं है, लेकिन समस्या आने पर कहाँ से देखना शुरू करना है, इसका अंदाज़ा होना चाहिए
    Matt का लिखा ACM Queue लेख भी पुराना है, लेकिन ऐसे optimization concepts को समझने के लिए बहुत अच्छा शुरुआती लेख है

    • “जिस layer पर आप काम करते हैं, उसके ठीक नीचे वाली layer को समझो” — यह बात मैंने college में अपने professor से सुनी थी। इससे मेरे career में बहुत मदद मिली
      उदाहरण के लिए, Java के साथ काम करते समय JVM को समझने से मैं medical software की performance कहीं बेहतर ढंग से optimize कर पाया। और सिर्फ नीचे की layer को समझना अपने-आप में मज़ेदार भी है
    • धन्यवाद Adam 😊
  • यह बात प्रभावशाली है कि वह स्पष्ट रूप से एक domain expert हैं, फिर भी शुरुआत से ही जटिल x86 instruction set में कूदने के बजाय बुनियादी बातों से धीरे-धीरे समझाते हैं

  • Matt Godbolt, C और C++ community के लिए सचमुच एक रत्न हैं
    Compiler Explorer और उनके योगदान की वजह से बहुत से developers की दुनिया बेहतर हुई है

    • क्या?! Godbolt सच में कोई इंसान है?!
  • मैं Advent of Computer Science Advent Calendars, Day 2 देख रहा हूँ

    • लगता है अब हम उस मुकाम पर पहुँच गए हैं
  • मुझे SQLite द्वारा इस्तेमाल की जाने वाली code amalgamation technique में बहुत दिलचस्पी है
    SQLite team के मुताबिक, सिर्फ इसी तरीके से 5–10% performance improvement मिलती है। अच्छा होता अगर Matt session के दौरान इस विषय को कवर करते

    • यह काफ़ी आम विषय है, और वास्तव में compiler optimization से ज़्यादा एक build approach है जिसे “unity build” कहा जाता है
      संदर्भ: Unity build wiki
    • आजकल unity build की तुलना में LTO(Link Time Optimization) ज़्यादा इस्तेमाल होता है
      फिर भी non-incremental builds में LTO धीमा हो सकता है, इसलिए one-off builds में unity build अब भी उपयोगी है
  • 25 साल से software development कर रहा हूँ, लेकिन अब भी सोचता हूँ कि क्या मैं optimal compiler flags इस्तेमाल कर रहा हूँ

    • मेरे अनुभव में, flags जितने कम हों उतना बेहतर
      ज़्यादातर मामलों में -O2 काफ़ी होता है। compiler update होने के साथ उसकी internal optimizations बेहतर होती रहती हैं, इसलिए developers को आमतौर पर खुद बहुत बारीकी से tuning करने की ज़रूरत नहीं पड़ती
      और गलत benchmark के आधार पर flags जोड़ना जोखिम भरा है। system state के हिसाब से 1–2% performance difference आम बात है
      code structure बदलने से cache-friendliness बदल सकती है, और performance पर असर पड़ सकता है। यानी वजह flag नहीं, बल्कि code layout भी हो सकता है
  • आगे के posts का इंतज़ार है। आज सुबह मैंने SBCL को (+ base (* index scale)) और (+ base (ash index n)) patterns को एक ही LEA instruction में optimize करना सिखाया। यानी Day 2 में सीखी हुई बात को तुरंत लागू कर लिया

  • Godbolt content कभी भी ज़्यादा नहीं हो सकता

  • अच्छा होता अगर integer constants से division वाले operations पर भी बात होती। Hacker’s Delight का वह chapter शानदार है, लेकिन आम पाठकों को थोड़ा कठिन लग सकता है

  • यह compiler nerds के लिए Advent of Code जैसा है
    हर दिन optimization पर छोटे-छोटे lessons के ज़रिए intuition बनाना — यह format बहुत पसंद आया
    अगर आप समझ लें कि compiler क्या और क्यों करता है, तो आप किसी भी language में बेहतर programmer बन सकते हैं