اندازه متغیر ها ربطی به سایز رم و بیشتر شدن حافظه نداره و مستقیما مربوط میشه به اندازه 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 ها چند بار باید پر و خالی میشدن که به مراتب برنامه ها رو کند و عملا غیر قابل استفاده می کرد .