सिंक के संदर्भ में "हॉट पाथ" का क्या अर्थ है।


14

जाने संस्करण: 1.13.4 स्रोत कोड सिंक / एक बार में। निम्न टिप्पणी में "गर्म पथ" का उल्लेख किया गया है:

type Once struct {
    // done indicates whether the action has been performed.
    // It is first in the struct because it is used in the hot path.
    // The hot path is inlined at every call site.
    // Placing done first allows more compact instructions on some architectures (amd64/x86),
    // and fewer instructions (to calculate offset) on other architectures.
    done uint32
    m    Mutex
}

मेरे प्रश्न हैं:

  1. "हॉट पाथ" का यहां क्या मतलब है?

  2. क्या "यह संरचना में सबसे पहले है" एक "गर्म पथ" को अधिक कुशल बनाता है? क्यों?


फ़ील्ड को पहले रखना बेहतर क्यों है, इसे अंतिम वाक्य में समझाया गया है। उस बारे में कुछ भी अस्पष्ट है?
पीटर

जवाबों:


10

एक गर्म रास्ता बहुत बार निष्पादित निर्देशों का एक क्रम है।

किसी संरचना के पहले क्षेत्र तक पहुँचने पर, हम सीधे पहले क्षेत्र तक पहुँचने के लिए संरचना की ओर संकेत को रोक सकते हैं। अन्य क्षेत्रों तक पहुंचने के लिए, हमें स्ट्रक्चर पॉइंटर के अलावा पहले मूल्य से एक ऑफसेट प्रदान करना होगा।

मशीन कोड में, यह ऑफसेट निर्देश के साथ पारित करने के लिए एक अतिरिक्त मूल्य है जो इसे लंबे समय तक बनाता है। प्रदर्शन प्रभाव यह है कि सीपीयू को एक्सेस करने के लिए मूल्य का पता प्राप्त करने के लिए स्ट्रक्चर पॉइंटर के लिए ऑफसेट के अतिरिक्त प्रदर्शन करना होगा।

इस प्रकार एक संरचना के पहले क्षेत्र तक पहुंचने के लिए मशीन कोड अधिक कॉम्पैक्ट और तेज है।

ध्यान दें कि यह मानता है कि मेमोरी में फ़ील्ड मानों का लेआउट संरचना की परिभाषा के समान है।


क्या आप अंतिम वाक्य पर विस्तार कर सकते हैं? यानी क्या ऐसा नहीं है?
कोलोनीमेटर

@colminator उदाहरण के लिए भंडारण स्थान को अनुकूलित करने के लिए एक संरचना के क्षेत्र क्रम को स्मृति में बदलने का निर्णय ले सकता है। गो कम्पाइलर ऐसा नहीं करता है, जहां तक ​​मुझे पता है।
चमीक

1
@chmike अपने उत्कृष्ट उत्तर के लिए thx। मैं जानना चाहता हूं कि क्या इसका मतलब है कि मुझे अपने दैनिक कार्यक्रम के काम में एक संरचना के पहले स्थान पर अक्सर एक्सेस किए गए फ़ील्ड को रखना चाहिए?
यालू वैंग

1
@YalouWang यह एक छोटा अनुकूलन होगा। यह केवल प्रयास के लायक है अगर प्रदर्शन महत्वपूर्ण है।
चमीक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.