সিঙ্কের প্রসঙ্গে "হট পাথ" এর অর্থ কী? একবার?


14

সংস্করণে যান: 1.13.4 সোর্স কোড সিঙ্ক / একবার.go এ , নিম্নলিখিত মন্তব্যগুলিতে "হট পাথ" উল্লেখ করা হয়েছে:

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

একটি গরম পথ নির্দেশাবলী একটি ক্রম খুব ঘন ঘন সম্পাদন করা হয়।

কোনও কাঠামোর প্রথম ক্ষেত্র অ্যাক্সেস করার সময়, আমরা প্রথম ক্ষেত্রটি অ্যাক্সেসের জন্য কাঠামোর দিকে সরাসরি পয়েন্টারটিকে ডিফারেন্স করতে পারি। অন্যান্য ক্ষেত্রগুলি অ্যাক্সেস করতে, আমাদের স্ট্রাক্ট পয়েন্টার ছাড়াও প্রথম মান থেকে একটি অফসেট সরবরাহ করতে হবে।

মেশিন কোডে, এই অফসেটটি নির্দেশের সাথে পাস করার জন্য একটি অতিরিক্ত মান যা এটি আরও দীর্ঘ করে তোলে। পারফরম্যান্সের প্রভাবটি হ'ল সিপিইউতে অ্যাক্সেসের মানটির ঠিকানা পেতে স্ট্রাক্ট পয়েন্টারে অফসেট যুক্ত করতে হবে।

সুতরাং কোনও কাঠামোর প্রথম ক্ষেত্রটি অ্যাক্সেস করার জন্য মেশিন কোডটি আরও কমপ্যাক্ট এবং দ্রুত।

নোট করুন যে এটি ধরে নিয়েছে যে মেমরির ক্ষেত্রে ক্ষেত্রের মানগুলির বিন্যাস কাঠামোর সংজ্ঞা অনুসারে একই।


আপনি কি শেষ বাক্যে প্রসারিত করতে পারেন? ie.কখন হয় না?
কলিনেটর

@ কলিনেটর একটি সংকলক উদাহরণস্বরূপ স্টোরেজ স্পেসটি অপ্টিমাইজ করতে মেমরির কোনও কাঠামোর ফিল্ড ক্রম পরিবর্তন করার সিদ্ধান্ত নিতে পারে। গো সংকলক যতদূর আমার জানা হিসাবে এটি করে না।
chmike

1
আপনার চমৎকার উত্তরের জন্য @ chmike thx। আমি জানতে চাই যে এর অর্থ কি আমার দৈনিক প্রোগ্রামিংয়ের কাজের জন্য আমার প্রায়শই অ্যাক্সেস করা ক্ষেত্রটি কোনও কাঠামোর প্রথম স্থানে রাখা উচিত?
ইয়ালু ওয়াং

1
@ ইয়ালুওয়াং এটি একটি ছোট্ট অপ্টিমাইজেশন হবে। পারফরম্যান্স গুরুত্বপূর্ণ হলে এটি কেবল চেষ্টা করার উপযুক্ত।
chmike
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.