जेफ डीन की "प्रत्येक प्रोग्रामर को पता होना चाहिए कि विलंब संख्या" हार्डवेयर कार्यान्वयन के संदर्भ में सटीक कैसे हो सकती है?


11

मैं लेटेंसी नंबरों के इस चार्ट की बात कर रहा हूं , जिसका श्रेय Google में जेफ डीन को दिया जाता है।

मुझे जो बात समझ में नहीं आ रही है, क्या ये संख्याएँ हार्डवेयर के एक सेट से दूसरे में भिन्न नहीं हैं? ये सभी विभिन्न प्रकार के रैम, सीपीयू, मदरबोर्ड, हार्ड ड्राइव, आदि के लिए सटीक कैसे हो सकते हैं?


लोग देखें ।eecs.berkeley.edu/~rcs/research/interactive_latency.html जो दिखाता है कि संख्या (प्रतिनिधि हार्डवेयर प्रति वर्ष) कैसे बदलती है।
श्रीवत्सआर

जवाबों:


14

ये संख्या ( 10 वर्षों में नॉरविग के स्वयं के प्रोग्रामिंग पर सूचीबद्ध ) भी अनुमानित हैं, केवल (आदेश के) परिमाण के रूप में उपयोगी हैं।

दरअसल, आज का हार्डवेयर (डेस्कटॉप या लैपटॉप के लिए कम से कम) सस्ते 300 € लैपटॉप और हाई-एंड 10k € वर्कस्टेशन के बीच भी इतना भिन्न नहीं है। गति लगभग 2 या 4 के कारक से भिन्न होती है। इस तरह के वर्कस्टेशन में बड़ी डिस्क, अधिक कोर, कैश और रैम हो सकते हैं। हालांकि, कच्चे एकल-थ्रेडेड प्रदर्शन पर इसका अधिक प्रभाव नहीं पड़ता है।

कुछ आंकड़े http://openbenchmarking.org/ या कुछ CPU तुलनाकर्ताओं को देखें

तथाकथित मूर के कानून है मर रहा है । घर पर मेरा 3+ साल पुराना डेस्कटॉप (i3770K) कुछ i6700 द्वारा प्रतिस्थापित किया जा सकता है (आज, मार्च 2016 में) जो केवल 20% तेज है।


7

संख्या सटीक होने के लिए नहीं हैं। यह स्तरों के बीच परिमाण के आदेशों के बीच अनुपात है जो मायने रखता है।

हालाँकि, जब एक विघटनकारी तकनीक प्रकट होती है (जैसे क्लाउड कंप्यूटिंग, 10GB / 100GB ईथरनेट, नया नेटवर्किंग कर्नेल मॉड्यूल, SSD स्टोरेज नेटवर्क, वर्चुअलाइजेशन और कंटेनरीकरण), इन संख्याओं को नए स्तरों के दिखाई देने, गायब होने, या चारों ओर फेर दिए जाने के कारण अमान्य किया जा सकता है।

जब उच्च स्तर पर प्रोग्रामिंग की जाती है - जहां सभी संगणना, नेटवर्किंग, पार्सिंग इत्यादि का प्रदर्शन किया जाता है, तो स्वयं द्वारा लिखे गए पुस्तकालयों का उपयोग नहीं किया जाता है, निम्न-स्तरीय संचालन के प्रदर्शन के आंकड़े जानने से बहुत मदद नहीं मिल सकती है, क्योंकि आपके प्रत्येक अवसर को बेहतर बनाने के लिए। लाइब्रेरी का प्रदर्शन सीमित या एकमुश्त असंभव है।

इसके बजाय, प्रत्येक लाइब्रेरी के प्रदर्शन-संबंधित प्रलेखन को ध्यान से पढ़ें। यदि कोई पुस्तकालय उन लोगों के साथ नहीं आता है, तो उनसे पूछें - इसे एक मुद्दा बनाएं। या सॉफ्टवेयर को सही तरीके से बेंचमार्क करना सीखें।

विलंबता संख्याओं की एक बुनियादी समझ होने पर महत्वपूर्ण है जब आप एक कंपनी द्वारा नियुक्त किए जाते हैं जो सॉफ्टवेयर घटकों को डिजाइन और निर्माण करती है। इसकी तुलना उस कंपनी से करें जो कारों और हर घटक को डिज़ाइन और बनाती है - जिसमें लौकिक "पहिया को सुदृढ़ करना" (रबर, टायर का दबाव, treads, आदि) शामिल हैं।

अधिकांश सॉफ़्टवेयर कंपनियां घटक स्तर पर काम नहीं करती हैं - संपूर्ण कार्यात्मक सॉफ़्टवेयर सिस्टम का निर्माण घटकों को एक साथ रखने से किया जा सकता है। इन सॉफ्टवेयर कंपनियों को अक्षांशों के संदर्भ में इंजीनियर घटकों पर ध्यान केंद्रित करने की आवश्यकता नहीं है; इसके बजाय उन्हें अपने द्वारा चुने गए घटकों की गुणवत्ता का मूल्यांकन करने की आवश्यकता है।

संक्षेप में, (1) यह बहुत संभव है कि आपको विलंबता संख्या जानने की आवश्यकता न हो; (2) जब तक आप किसी कंपनी द्वारा काम पर रखा जाना चाहते हैं जो सॉफ्टवेयर कंपोनेंट (लाइब्रेरी) बनाती है, चाहे वह बिक्री के लिए हो या आंतरिक उपयोग के लिए (जैसा कि दुनिया की कुछ सबसे बड़ी सॉफ्टवेयर कंपनियों में है), (3) यदि आपको उन नंबरों की जरूरत है, वैज्ञानिक तरीके से सही तरीके से बेंचमार्क करना आपका काम है, अन्यथा आपको सॉफ्टवेयर घटकों पर काम नहीं करना चाहिए।


3

किसी ने यह दावा नहीं किया कि ये नंबर किसी भी हार्डवेयर के लिए सटीक हैं।

हालांकि, वे अंधे अनुमानों की तुलना में बहुत अधिक सटीक हैं। जो कि कई लोग दुर्भाग्य से अपने कोड को आधार बनाते हैं।


2

वे पूरी तरह से सही नहीं हैं, और वे वास्तव में होने का इरादा नहीं कर रहे हैं।

वे (विशेष रूप से छोटी संख्या पर) केवल परिमाण के क्रम से थोड़ा बेहतर हैं। एक और बिंदु यह है कि यह समझ बनाने में मदद कर सकता है कि कौन सी चीजें एक साथ पास हैं, कि लोग कभी-कभी गलत व्याख्या करते हैं कि वे वास्तव में बहुत अलग हैं। एक स्पष्ट उदाहरण के लिए, बहुत से लोग मानते हैं कि शाखा का दुरुपयोग अक्सर एक बड़ी बात है। यह एक बड़ी बात हो सकती है अगर इसे बहुत बार दोहराया जाए, लेकिन जरूरी नहीं है कि कहीं भी और हर जगह सिर्फ एक बड़ी राशि का त्याग करने के लिए बेहतर शाखा भविष्यवाणी प्राप्त करें (जैसे, यदि आप मुख्य मेमोरी से पढ़ते हैं, या यहां तक ​​कि शाखा भविष्यवाणी में सुधार करने के लिए L2 कैश भी, यह शायद एक शुद्ध नुकसान है)।

उसी समय, हां, परिमाण के आदेश सबसे उपयोगी भाग हो सकते हैं। उदाहरण के लिए, एक रजिस्टर से मुख्य मेमोरी से डेटा एक्सेस करने में लगभग 100 गुना अधिक समय लगता है। हां, एक मशीन पर यह लगभग 97 गुना लंबा हो सकता है, और दूसरे पर यह 127 गुना अधिक लंबा हो सकता है। यह लगभग निश्चित रूप से 100 के करीब या तो 10 या 1000 से अधिक होने जा रहा है।

निजी तौर पर, मैं इनमें से अधिकांश को प्रशांत महासागर के द्वीपों के समान होने के बारे में सोचूंगा। हार्ड ड्राइव की गति (उदाहरण के लिए) हवाई द्वीप हो सकती है। एसएसडी गति फिलीपीन द्वीप हैं। यह उन सभी में से प्रत्येक को एक बिंदु की तरह बनाने के लिए मानचित्र को छोटे पैमाने पर दिखा रहा है। यदि हम ज़ूम इन करते हैं, तो यह स्पष्ट रूप से सच नहीं है - लेकिन दोनों श्रृंखलाओं के बीच की दूरी या तो श्रृंखला में द्वीपों के बीच की दूरी से कई गुना बड़ी है।


0

बेशक नंबर हर मशीन के लिए सटीक नहीं हो सकते। और मुझे लगता है कि वे कभी नहीं चाहिए थे। वे कई तरह के ऑपरेशनों के बीच परिमाण के क्रम में अंतर दिखाते हैं, हालाँकि।

आपको अपने लिंक किए गए डेटा की टिप्पणियों में कुछ और उपयोगी लिंक और डेटा मिल सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.