- इंटरव्यू में अक्सर पूछे जाने वाले 2 सवाल
- टेक्स्ट फ़ाइल में शब्दों की गिनती करने वाला एक प्रोग्राम लिखिए
- इस प्रोग्राम में performance bottleneck किस हिस्से में है?
- अक्सर लोग इसका जवाब "फ़ाइल से पढ़ना" देते हैं, लेकिन अब ऐसा नहीं है
- 10-20 साल पहले ऐसा था, लेकिन 2022 तक डिस्क से sequential read करना बहुत तेज़ हो चुका है (लेखक को भी टेस्ट करने से पहले यह पता नहीं था)
- bottleneck वाला हिस्सा input को process/parse करके memory में allocate करना है: शब्दों में तोड़ना, lowercase में बदलना, hash table से frequency गिनना जैसे काम
- Python/Go में 413MB की टेक्स्ट फ़ाइल (King James Bible को 100 बार जोड़कर बनाई गई फ़ाइल) पर टेस्ट करने पर
- पढ़ने में सिर्फ 0.1~0.2 सेकंड लगते हैं, जबकि processing में 7 सेकंड से 2 सेकंड तक लगते हैं
- निष्कर्ष यह है कि "big data" को process करते समय डिस्क I/O bottleneck न भी हो सकता है
14 टिप्पणियां
भले ही यह sequential access हो, फिर भी भाषा और लाइब्रेरी के अनुसार IO पाइप के इस्तेमाल का तरीका, डेवलपर की IO API request की आवृत्ति जैसे प्रभाव डालने वाले हिस्से होते हैं, इसलिए यह कहना कि IO अब bottleneck नहीं रहा, इसके लिए कुछ पूर्वधारणाएँ ज़रूरी हैं।
Network io, io नहीं है क्या? hahaha
चाहे यह कितना भी तेज़ हो जाए, I/O तो I/O ही है। यही वजह है कि प्रोग्रामिंग में सिर्फ़ I/O हिस्से के लिए अलग solutions मौजूद होते हैं।
पूरे बिग डेटा डिस्क को nvme ssd से बदलने वाले हैं? haha आखिर इसकी कीमत कितनी होगी...
डिस्क I/O से बहुत परेशान रहते हुए, और प्लेटर को जितना संभव हो उतना कम हिलाना पड़े ऐसा काम करने वाले मेरे लिए यह काफ़ी दिलचस्प बात है।
लेख में "sequential" की बात भी है।
अगर seek बिल्कुल न करना पड़े, तो हो सकता है कि यह बात पूरी तरह ग़लत न हो।
यह गलत मान्यताओं पर आधारित प्रयोग है।
कृपया अतिरिक्त विवरण दें।
बॉटलनेक अपने आप में सापेक्ष समय की बात है।
CPU की गति और I/O की तुलना करना सही है।
सिर्फ इसलिए कि I/O पहले की तुलना में तेज़ हो गया है, यह CPU से तेज़ नहीं हो सकता।
यह
mmapका उपयोग करके सिर्फ virtual memory में load करके रखा गया हो सकता है, और वास्तव में CPU जब भी computation करता है तब पढ़ता है।CPU और सभी memory (register, main memory, disk) के बीच का संचार भी पूरी तरह I/O ही है।
https://stackoverflow.com/questions/5877797/how-does-mmap-work
लगता है अब यह जानने की जिज्ञासा हो रही है कि बिग डेटा को परखने का मानदंड क्या होगा।
दिलचस्प है।
आज भी ज्ञान में एक और बात जुड़ गई।
https://news.ycombinator.com/item?id=33751266 पर मौजूद पहले कमेंट का URL दिलचस्प है.
Napkin Math (सरल गणित)
कहा जा रहा है कि sequential I/O अब लगभग memory speed के करीब पहुंच रहा है..
"Napkin math" नाम ही बहुत आकर्षक है.
क्या UTF-8 बनाते समय Rob Pike ने इसे नैपकिन पर खुरचकर दिखाया था?