سلام به همه ی دوستان و استاد عزیز..
(مقاله یکم طولانی شاید باشه، ممنون که حوصله میکنید:))
فایل 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;
}
و بازهم میبینین که با اینکه ما از رفرنس تایپ استفاده نکردیم و از پریمیتیو تایپها استفاده کردیم بازهم بحث مموری هست و پرفورمنس رو گاهی اوقات میتونه پایین بیاره..
ممنون از اینکه وقتتون رو گذاشتید و خوندید.. امیدوارم لذت برده باشین:)
ضمنن اگه جایی رو اشتباه گفتم ممنون میشم حتما بگید و تصحیحش کنید..