28 पॉइंट द्वारा xguru 2022-11-28 | 14 टिप्पणियां | WhatsApp पर शेयर करें
  • इंटरव्यू में अक्सर पूछे जाने वाले 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 टिप्पणियां

 
is9117 2022-12-01

भले ही यह sequential access हो, फिर भी भाषा और लाइब्रेरी के अनुसार IO पाइप के इस्तेमाल का तरीका, डेवलपर की IO API request की आवृत्ति जैसे प्रभाव डालने वाले हिस्से होते हैं, इसलिए यह कहना कि IO अब bottleneck नहीं रहा, इसके लिए कुछ पूर्वधारणाएँ ज़रूरी हैं।

 
yuriwin 2022-11-30

Network io, io नहीं है क्या? hahaha

 
yuriwin 2022-11-30

चाहे यह कितना भी तेज़ हो जाए, I/O तो I/O ही है। यही वजह है कि प्रोग्रामिंग में सिर्फ़ I/O हिस्से के लिए अलग solutions मौजूद होते हैं।

 
love7peace 2022-11-29

पूरे बिग डेटा डिस्क को nvme ssd से बदलने वाले हैं? haha आखिर इसकी कीमत कितनी होगी...

 
loblue 2022-11-28

डिस्क I/O से बहुत परेशान रहते हुए, और प्लेटर को जितना संभव हो उतना कम हिलाना पड़े ऐसा काम करने वाले मेरे लिए यह काफ़ी दिलचस्प बात है।
लेख में "sequential" की बात भी है।
अगर seek बिल्कुल न करना पड़े, तो हो सकता है कि यह बात पूरी तरह ग़लत न हो।

 
deokim 2022-11-28

यह गलत मान्यताओं पर आधारित प्रयोग है।

 
roxie 2022-11-29

कृपया अतिरिक्त विवरण दें।

 
deokim 2022-12-05

बॉटलनेक अपने आप में सापेक्ष समय की बात है।
CPU की गति और I/O की तुलना करना सही है।
सिर्फ इसलिए कि I/O पहले की तुलना में तेज़ हो गया है, यह CPU से तेज़ नहीं हो सकता।

 
deokim 2022-12-05

यह mmap का उपयोग करके सिर्फ virtual memory में load करके रखा गया हो सकता है, और वास्तव में CPU जब भी computation करता है तब पढ़ता है।
CPU और सभी memory (register, main memory, disk) के बीच का संचार भी पूरी तरह I/O ही है।
https://stackoverflow.com/questions/5877797/how-does-mmap-work

 
park2348190 2022-11-28

लगता है अब यह जानने की जिज्ञासा हो रही है कि बिग डेटा को परखने का मानदंड क्या होगा।

 
nicewook 2022-11-28

दिलचस्प है।

 
jungmin1237 2022-11-28

आज भी ज्ञान में एक और बात जुड़ गई।

 
xguru 2022-11-28

https://news.ycombinator.com/item?id=33751266 पर मौजूद पहले कमेंट का URL दिलचस्प है.
Napkin Math (सरल गणित)
कहा जा रहा है कि sequential I/O अब लगभग memory speed के करीब पहुंच रहा है..

 
nicewook 2022-11-28

"Napkin math" नाम ही बहुत आकर्षक है.
क्या UTF-8 बनाते समय Rob Pike ने इसे नैपकिन पर खुरचकर दिखाया था?