چرا اندازه متغیر ها ثابت هستش؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا اندازه متغیر ها ثابت هستش؟

+2 امتیاز

سوالی که همیشه برام پیش اومده اینه که چرا اندازه متغیر ها توی زبانهای برنامه نویسی ثابت هست , یعنی مثلا نوع INT چرا توی سی شارپ 4 بایت هستش؟ یا توی سی پلاس 2 بایت ؟ یعنی با توجه به اندازه رم های امروزی که چند گیک ظرفیت دارن چرا ما نمیتونیم یه عدد بزرگ رو توی حافظه ذخیره کنیم؟ منظورم اینه که چرا اندازه متغیرها رو دستی نمیتونیم بدیم؟ ممنون.

سوال شده تیر 3, 1393  بوسیله ی daniyaltjm (امتیاز 840)   47 88 103
int توی سی++ هم 4 بایت هست...
نه خیر 16 بیتی هم داریم!!! من مثال زدم خوب 32 بیتی هم هست.

2 پاسخ

+3 امتیاز
 
بهترین پاسخ

اندازه متغیر ها ربطی به سایز رم و بیشتر شدن حافظه نداره و مستقیما مربوط میشه به اندازه Register های cpu و سایز cache .

تمام عملیات هایی که cpu روی متغیر ها انجام میده باید قبل از اجرا متغیر ها به ثبات ها(register ) های روی cpu منتقل بشن که اندازه هاشون خیلی کوچیکه مثلا برای cpu های ۸۰۸۶ حدودا ۱۰ تا  رجیستر داریم که هر کدوم ۳۲ بیت هستن . حالا اگر اندازه متغیر از سایز register بیشتر بشه اون عملیات مثلا +‌نمیتونه با یک دستور العمل انجام بشه و چند تا عملیات انجام میشه که فوق العاده کند تره .

و همینطور بخاطر سرعت پایین رم به نسبت سرعت پردازش cpu 

cpu ها علاوه بر register  ها ۳تا فضای cache هم دارن  L1,L2,L3  که فوق العاده از ram سریع ترن ولی خیلی گرون هستن و فضاشون محدوده مثلا  برای cpu core i7 هر هسته یک L1 داره با اندازه ۳۲ کیلوبایت !  

 مقادیری که قراره از ram خونده بشن جلوتر داخل این فضا ها ذخیره مشن مثلا وقتی که شما یک آرایه رو از اول تا آخر میخونین کل این آرایه توی L1 ذخیره میشه و از L1 خونده میشه به جای ram .

حالا اگر متغیر ها رو بصورت پیش فرض مثلا می کردن ۱ کیلو بایت(۱۰۰۰ بایت ) باعث میشد که دیگه آرایه بزرگتر از ۳۲ عضو داخل L1 ذخیره نشه و همین طور برای یک عملیات ساده مثل جمع register ها چند بار باید پر و خالی میشدن  که به مراتب برنامه ها رو کند و عملا غیر قابل استفاده می کرد .

پاسخ داده شده تیر 3, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد تیر 4, 1393 بوسیله ی daniyaltjm
یعنی این متغییر ها روی رم نگهدلری میشن ولی وقتی می خوایم روشون عملیات ریاضی انجام بدیم باید برن توی رجیستر و رجیستر هم چون فعلا 32 یا 64 هست پس مقدار متغییر هم توی این رنجه آره؟
کاشکی سی پی یو هارو با نور میساختن تا سرعتشون زیاد تر بشه مثل کابل نوری ولی خیلی ریزتر اینطوری دیگه هم گرم نمیشد هم توان کمتری مصرف میکرد هم سرعت وحشتناکی داشت!!
آره برای همینه
+1 امتیاز
سلام برای اینکه به اندازه نیازت از حافظه استفاده کنی فراموش نکن فضای حافظه یک فضای مهم و پر مصرفه .

برای اینکه از حجم بیشتر برخوردار باشی میتونی انواع مختلفی رو بکار بگیری یا اینکه تکنیک های مختلف رو بکار بگیری
پاسخ داده شده تیر 3, 1393 بوسیله ی alixw24 (امتیاز 656)   2 5 13
...