4 अरब if स्टेटमेंट्स
- हाल ही में social media देखते समय ट्रेन में यह screenshot मिला।
- यह कोड time-memory tradeoff का एक बेहतरीन उदाहरण है।
- performance बढ़ाने के लिए इसे C में implement करने की कोशिश की गई।
कोड की संरचना
- C में even और odd पहचानने वाला कोड लिखा गया।
- optimization बंद करके compile किया गया।
- 0 से 10 तक के numbers पर यह सही चलता है, लेकिन उससे बड़े numbers पर समस्या आती है।
Meta programming
- Python का उपयोग करके if statements को meta programming से generate किया गया।
- 8-bit integers के लिए even और odd पहचानने वाला program बनाया गया।
16-bit विस्तार
- 16-bit integers के लिए इसी तरीके से program को बढ़ाया गया।
- लगभग 130k lines की C file generate करके compile की गई।
32-bit चुनौती
- 32-bit integers के लिए program को बढ़ाने की कोशिश की गई।
- 330GB की C file generate हुई, लेकिन compiler heap space की कमी के कारण fail हो गया।
- Portable Executable format की सीमा के कारण 4GB से बड़ी files को process नहीं किया जा सका।
सीधे machine code लिखना
- x86-64 assembly language में सीधे
IsEven function लिखा गया।
- Python का उपयोग करके machine code को manually compile किया गया।
executable file बनाना
- 40GB की file बनाई गई जो सभी 32-bit integers के लिए even और odd पहचानती है।
- file को memory map किया गया और function pointer का उपयोग करके code चलाया गया।
अंतिम bug fix
- unsigned integer parsing की समस्या हल करने के लिए
strtoul function से replace किया गया।
- program बहुत तेज़ है और बड़े numbers के लिए भी 10 सेकंड के भीतर result देता है।
GN⁺ की राय
- महत्त्व: यह लेख programming के एक बुनियादी concept, time-memory tradeoff, को समझने में मदद करता है। साथ ही, यह दिखाता है कि unoptimized code का वास्तविक performance पर क्या असर पड़ता है।
- रोचकता: programming languages के बीच performance के अंतर और compiler की सीमाओं को प्रयोगात्मक रूप से खंगालने की प्रक्रिया दिलचस्प है। खासकर Python और C की तुलना करते हुए performance सुधारने की कोशिश मज़ेदार है।
- सीख: यह लेख दिखाता है कि जटिल समस्याओं को हल करने के लिए कभी-कभी जो approach अक्षम लगती है, वह वास्तव में उपयोगी हो सकती है। साथ ही, यह computer science में रचनात्मक solutions खोजने के महत्त्व पर ज़ोर देता है।
1 टिप्पणियां
Hacker News राय
पहली टिप्पणी का सार:
दूसरी टिप्पणी का सार:
for loopसे हल होने वाला उदाहरण पेश किया गया.तीसरी टिप्पणी का सार:
is-evenऔरis-oddnpm package पर मज़ाक.npm installइस्तेमाल करने पर 40GB का package डाउनलोड होने की कल्पना.चौथी टिप्पणी का सार:
पाँचवीं टिप्पणी का सार:
छठी टिप्पणी का सार:
सातवीं टिप्पणी का सार:
आठवीं टिप्पणी का सार:
नौवीं टिप्पणी का सार:
libdividelibrary के उदाहरण के साथ 8-bit integer division को lookup table से बदलने का अनुभव साझा किया.दसवीं टिप्पणी का सार: