به کانال کلوردوز خوش اومدین
سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم
🔥لینوکس
🔥برنامه نویسی فرانتاند
🔥برنامه نویسی بکاند
🔥اخبار تکنولوژی و...
💢~> @mmdrsdev
Post #2634
4.05K
توی زبان c یه کلیدواژه جالب به اسم register داریم که یه زمانی برای بهینه سازی خیلی مهم بود.
کارش این بود که به کامپایلر میگفت این متغیر قراره تو برنامه خیلی استفاده بشه، پس جای اینکه تو رم ذخیرهاش کنی، مستقیم ببرش تو رجیستر خود پردازنده تا سرعت خوندن و نوشتنش به شدت بره بالا.
مثلا برای یه متغیر شمارنده حلقه:
استفاده ازش یه سری قوانین سفت و سخت داره. مثلا نمیتونید آدرس این متغیر رو با علامت & بگیرید، چون اصلا تو مموری نیست که آدرس داشته باشه. یا اینکه متغیرهای گلوبال و استاتیک نمیتونن رجیستر بشن و حتما باید لوکال (داخل تابع) باشن.
اما قسمت جالب و معماری قضیه اینجاست: تو کامپایلرهای مدرن امروزی این کلیدواژه عملا فقط یه پیشنهاده و کامپایلر میتونه کلا نادیدهاش بگیره. کامپایلرهای امروزی انقدر هوشمند شدن که حتی اگه شما register رو ننویسید، خودشون با آنالیز کد تشخیص میدن کدوم متغیر تو رجیستر باشه بهتره. در واقع الان کامپایلرها خیلی بهتر از خود برنامه نویس میتونن منابع پردازنده رو مدیریت کنن.
دونستن این کلیدواژه شاید الان تو کدنویسی روزمره کاربرد نداشته باشه، اما درک خیلی خوبی از تفاوت سرعت حافظه و پردازنده میده و نشون میده کامپایلرها تو این سالها چقدر پیشرفت کردن. تو رفرنسهای اصلی مثل کتاب K&R هم بهش برمیخورید.
#c
@CleverDevs - @CleverDevsGp
کارش این بود که به کامپایلر میگفت این متغیر قراره تو برنامه خیلی استفاده بشه، پس جای اینکه تو رم ذخیرهاش کنی، مستقیم ببرش تو رجیستر خود پردازنده تا سرعت خوندن و نوشتنش به شدت بره بالا.
مثلا برای یه متغیر شمارنده حلقه:
int main() {
register int i = 0;
while (i < 1000) {
i++;
}
}استفاده ازش یه سری قوانین سفت و سخت داره. مثلا نمیتونید آدرس این متغیر رو با علامت & بگیرید، چون اصلا تو مموری نیست که آدرس داشته باشه. یا اینکه متغیرهای گلوبال و استاتیک نمیتونن رجیستر بشن و حتما باید لوکال (داخل تابع) باشن.
اما قسمت جالب و معماری قضیه اینجاست: تو کامپایلرهای مدرن امروزی این کلیدواژه عملا فقط یه پیشنهاده و کامپایلر میتونه کلا نادیدهاش بگیره. کامپایلرهای امروزی انقدر هوشمند شدن که حتی اگه شما register رو ننویسید، خودشون با آنالیز کد تشخیص میدن کدوم متغیر تو رجیستر باشه بهتره. در واقع الان کامپایلرها خیلی بهتر از خود برنامه نویس میتونن منابع پردازنده رو مدیریت کنن.
دونستن این کلیدواژه شاید الان تو کدنویسی روزمره کاربرد نداشته باشه، اما درک خیلی خوبی از تفاوت سرعت حافظه و پردازنده میده و نشون میده کامپایلرها تو این سالها چقدر پیشرفت کردن. تو رفرنسهای اصلی مثل کتاب K&R هم بهش برمیخورید.
#c
@CleverDevs - @CleverDevsGp
- ❤ 46
- 👍 10
- 🔥 5
- 👎 1
- 👌 1










