Skip to content

Abz81/SE_Lab5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SE_Lab5

Team members

  • Alireza Ziaee
  • Abdollah Zohrabi

تمرین

1.ابتدا profilling را بر روی کلاس javaCup اجرا میکنیم:

Screenshot (9) بعد از دادن ورودی‌ها به برنامه، برنامه با خطای OutOfMemoryError متوقف می‌شود. image

سپس مشاهده میکنیم که باتوجه به اطلاعات CPU از نرم افزارYourkit بیش‌ترین مصرف منابع را javaCup.main() و javaCup.temp() دارد:

Screenshot (12)

Screenshot (13)

image

با بررسی کد تابع temp می‌بینیم که این تابع از ArrayList برای ذخیره‌کردن داده استفاده می‌کند و چون object است در heap نگه‌داری می‌شود و خطایی که با آن برخورد کردیم به دلیل بزرگ‌شدن heap بود. با توجه به اینکه تعداد آیتم‌هایی که می‌خواهیم ذخیره کنیم تعداد ثابتی دارند می‌توانیم از آرایه استفاده کنیم تا داده در stack ذخیره شود. پس تابع temp را به صورت زیر تغییر می‌دهیم.

image

با اعمال تغییر گفته‌شده مشاهده می‌کنیم برنامه بدون خطا اجرا می‌شود. نمودارهای مربوط به برنامه‌ی اصلاح شده را در زیر مشاهده می‌کنیم.

image

image

image 2. برنامه موردنظر برای profiling: در این قسمت ما برنامه ای را نوشته ایم که یک کاراکتر و دو عدد n و m را در ورودی میگیرد و سپس یک شکل مثلث به اندازه n از ان کاراکتر ساخته و ان را به تعداد m بار کپی میکند.

مثال: p

    ابتدا برای این کار از قطعه کد زیر استفاده کردیم که داده ها را به صورت ارایه دوبعدی ذخیره و سپس چاپ به صورت ارایه ای چاپ کردیم.

sc7

عملیات profiling را با استفاده از نرم افزار Yourkit بر روی ان انجام میدهیم: Screenshot (15) همان طور که در شکل زیر مشاهد میشود بیشترین منابع را char_triangle_Builder به دلیل و جود print های پی در پی دارد مصرف میکنند بنابراین نتیجه میگیریم که امکان دارد از لحاظ پیاده سازی بهینه نباشد.

Screenshot (16)

Screenshot (17)

قطعه کد اصلاح شده که به صورت string کاراکتر های مورد نظر را چاپ میکند به عبارتی در حالت قبل تداد پرینت ها به ازای m<<n منتاسب با مجذور تعداد پرینت ها در این قسمت است.

قطعه کد جدید:

sc8

در حالت دوم مشاهده کردیم که مصرف منابع در حد خوبی کاهش یافته همچنین درصد منابعی که صرف printمیشد از 98 درصد به 90 درصد کاهش پیدا کرده است.همچنین میزان استفاده از cpuهم با مقدار قابل توجهی کاهش یافته . Screenshot (18) Screenshot (19)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages