(آموزشی) Auto-Boxing

پرسیده شده
فعالیت 1219 روز پیش
دیده شده 648 بار
3

سلام به همه ی دوستان و استاد عزیز..

(مقاله یکم طولانی شاید باشه، ممنون که حوصله میکنید:))

 

فایل NavigationExtensions که استاد paste کردن داخل پروژه رو داشتم میخوندم به یک نوع از Array برخورد کردم به نام SparseArray (مقاله ای جدا در این زمینه هم میزارم) که داخل داکیومنتش نوشته بود اجتناب میکنه از Auto-Boxing..

 

اما Auto-Boxing چی هست؟

 

توی JDK1.4 موقعی که میخواستن پریمیتیو تایپ ها رو به Wrapper Classes تبدیل کنند یا برعکس، (رپر کلاس ها کلاس هایی هستن که ما میتونیم با استفاده از اون از پریمیتیو تایپ ها در قالب آبجکت استفاده کنیم) هر دفعه باید کارهای تکراری انجام میدادن.. داخل JDK1.5 اومدن این رو به صورت اتوماتیکش کردن که همون Auto-Boxing هستش..

 

Boxing : تبدیل Primitive Type به Reference Type مثال : (int -> Integer)

UnBoxing: تبدیل Reference Type به Primitive Type مثال : (Integer -> int).

 

ولی مشکلی که دارن این هستش که به عنوان مثال یه Integer Object چهار دفعه بیشتر از Primitive Type ها فضا اشغال میکنه.. و میشه گفت پرمفورمنس رو پایین میاره.. برای مثال ما یک Primitive Type Integer تعریف میکنیم و اون رو داخل یه لوپ 100 تایی میندازیم، و بعد از لوپ ما 100 تا آبجکت ساختیم و فضای زیادی رو اشغال کردیم و باز هم پرفورمنس خوبی نداریم:

Integer sum = 0;
for(int i= 0;i< 100;i++){
    sum = sum + i;
}

و بازهم میبینین که با اینکه ما از رفرنس تایپ استفاده نکردیم و از پریمیتیو تایپ ها استفاده کردیم بازهم بحث مموری هست و پرفورمنس رو گاهی اوقات میتونه پایین بیاره..


ممنون از اینکه وقتتون رو گذاشتید و خوندید.. امیدوارم لذت برده باشین:)

ضمنن اگه جایی رو اشتباه گفتم ممنون میشم حتما بگید و تصحیحش کنید..

 

منبع 1

نیمچه منبع 2

فایل پیوست

1
حذف شده

سلام

ممنون ابولفضل جان از مقاله و منابع خوبی که قراردادی

با آرزوی سلامتی

فایل پیوست

Hamidreza Karimi

توسط

Hamidreza Karimi

10 دی 99