ورود

نسخه کامل مشاهده نسخه کامل : کاهش فضای استفاده شده در برنامه ( از رم )



as13851365
15-10-2007, 09:41
دوستان من این برنامه را نوشتم ولی به دلایلی نمی دونم چی از رم بیشتر استفاده می کنه

حجم خودش کمتر از 500 کیلو بایت است اما مابین 5 تا 9 مگابایت از رم را اشغال می کنه

آیا راهی وجود دارد که این فضا را ( فضای اشغال شده توسط برنامه ) به حداقل برسونم ؟

شاید فکر کنید که ممکنه دستورات بیشتری در هر لحظه اجرا می شه اما نه؟

در ضمن این برا هم بگم که فایل اجرائی این برنامه 1.05 مگابایت است که من این فایل را با برنامه UPX GUI پک کردم که اندازه این فایل شد 350 کیلو بایت .

در ضمن هر دوی این فایل ها به همان اندازه از رم را اشغال می کنند ؟

من این برنامه را آپلود کردم تا شاید کس بتونه کمکم کنه که چطوری این فضای استفاده شده توسط برنامه را به حداقل برسونم

از تمام دوستان کمال تشکر را دارم

اندازه این فایل 353 کیلو بایت می باشد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مرد مباح
15-10-2007, 09:50
دوست عزیز.
از روی فایل exe نمیتونم نظر بدم که چرا اینقدر زیاد مصرف حافظه داری. ولی دلایل متداول :
1. استفاده از متغییرهای زیاد در برنامه
2. انتقال اطلاعات برنامه از هارد به رم برای سرعت در نمایش (برای مثال تصاویر)

این دوتا رو بررسی کن توی سرس برنامت و خبرشو بده.

msarab
15-10-2007, 16:08
پسر عوي منم همين مشكل رو داشت از من پرسيد بهش گفتم بچه جان بد جوري نوشتي:38: :16:

CPUSatan
15-10-2007, 16:43
راستش من دانلودش نكردم....ولي اينجور مواقع دلايلش بايد همون دلايلي باشه كه as13851365 بهشون اشاره كرد.

سعي از ثبات ها استفاده كني چون سرعتشون از متغيرها بيشتره، در ضمن نوع متغيرها و .... را حتما متناسب با

نيازت انتخاب كن.

ديگه چيزي به فكرم نمي رسه!

romixery
15-10-2007, 20:28
سلام
پيشنهاد من اينه كه همه متغير هاي برنامت رو به صورت اشاره گري بويسي.
مطمئن باش درست ميشه. چون اشاره گر حافظه اي رو از سيستم مي گيره و بعد مي توني اونو به سيستم برگردوني.
من روي برنامه اي كه كار اون آناليز تصوير بود، اين مشكل رو داشتم چون به تعداد پيكسل هاي عكس متغير ميگرفت. ولي با اشاره گر همش حل شد.
موفق باشي
باي

as13851365
17-10-2007, 14:00
سلام
پيشنهاد من اينه كه همه متغير هاي برنامت رو به صورت اشاره گري بويسي.
مطمئن باش درست ميشه. چون اشاره گر حافظه اي رو از سيستم مي گيره و بعد مي توني اونو به سيستم برگردوني.
من روي برنامه اي كه كار اون آناليز تصوير بود، اين مشكل رو داشتم چون به تعداد پيكسل هاي عكس متغير ميگرفت. ولي با اشاره گر همش حل شد.
موفق باشي
باي


اگر می شه کمی بیشتر توضیح بدید یا حداقل یک مثال ساده بگید

از تمام دوستان تشکر می کنم

romixery
17-10-2007, 19:25
يك نمونه در مورد اشاره گر:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده از حافظه پويا (ديناميك):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشين

MasterData
18-10-2007, 21:10
دوستان من این برنامه را نوشتم ولی به دلایلی نمی دونم چی از رم بیشتر استفاده می کنه

حجم خودش کمتر از 500 کیلو بایت است اما مابین 5 تا 9 مگابایت از رم را اشغال می کنه

آیا راهی وجود دارد که این فضا را ( فضای اشغال شده توسط برنامه ) به حداقل برسونم ؟

شاید فکر کنید که ممکنه دستورات بیشتری در هر لحظه اجرا می شه اما نه؟

در ضمن این برا هم بگم که فایل اجرائی این برنامه 1.05 مگابایت است که من این فایل را با برنامه UPX GUI پک کردم که اندازه این فایل شد 350 کیلو بایت .

در ضمن هر دوی این فایل ها به همان اندازه از رم را اشغال می کنند ؟

من این برنامه را آپلود کردم تا شاید کس بتونه کمکم کنه که چطوری این فضای استفاده شده توسط برنامه را به حداقل برسونم

از تمام دوستان کمال تشکر را دارم

اندازه این فایل 353 کیلو بایت می باشد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این همه دردسر واسه چیه؟
9 مگا بایت هم فضایی نیست که اصلا بخوای قصه بخوری
در ضمن همیشه حجم فضای اشغالی مستقیما با حجم فایل اجرایی ارتباط نداره و بستگی به فضایی داره که برنامه شما از سیستم دریافت میکنه
در ضمن استفاده از اشاره گرها در اینجا برای شما اصلا خوب نیست چون مدیریت حافظه رو برای شما سخت میکنه و اصلا هم فضای کمتری دریافت نمیکنید
بهتره مدیریت اینجور مسائل رو به عهده کامپایلر و ویندوز بذارید و همون روال عادی کار خودتون رو ادامه بدین

romixery
19-10-2007, 10:32
این همه دردسر واسه چیه؟
9 مگا بایت هم فضایی نیست که اصلا بخوای قصه بخوری
در ضمن همیشه حجم فضای اشغالی مستقیما با حجم فایل اجرایی ارتباط نداره و بستگی به فضایی داره که برنامه شما از سیستم دریافت میکنه
در ضمن استفاده از اشاره گرها در اینجا برای شما اصلا خوب نیست چون مدیریت حافظه رو برای شما سخت میکنه و اصلا هم فضای کمتری دریافت نمیکنید
بهتره مدیریت اینجور مسائل رو به عهده کامپایلر و ویندوز بذارید و همون روال عادی کار خودتون رو ادامه بدین
سلام
Master Data ي عزيز:
شما راست مي گين. 9 مگ هم فضا شد؟ ولي قطره قطره جمع گردد وانگهي ....
بعد هم در مورد اشاره گر ها من حاضرم به شما اثبات كنم تفاوت استفاده از اشاره گر و متغير معمولي در برنامه رو. حرفتون رو قبول دارم كه مديريت حافظه مشكل مي شه ولي سرعت كار بالاتر مي ره.
البته بايد به as13851365 عزيزم بگم كه شايد به قول Master Data ي عزيزم در اينجا اشاره گر چاره ساز برنامه شما نباشه ولي به هر حال من پيشنهاد دادم.
ولي در اينكه در برنامه هاي بزرگ كه نياز به متغير هاي زيادي دارن استفاده از اشاره گر واجبه جاي هيچ شكي نيست.
موفق باشين
باي

Mavix
20-10-2007, 20:18
با سلام

اگه از متغیری در طول برنامه مکررا استفاده میکنی بهتره اونو به صورت اشاره گر تعریف نکنی چون هیچ فایده ای نداره.

فقط اون اجزایی رو از نوع اشاره گر استفاده کن که احتمال اجرایش کم و یا صفره. مثلا پنجره "درباره ما" که اکثر برنامه ها دارن.

در این مورد از پنجره ها که ممکنه از هر 100 بار اجرای برنامه یه بار اون صفحه اجرا بشه،

بهتره اون پنجره رو همون اول اجرای برنامه نسازی و موقع نمایش آن ساخته شود و در آخر هم حافظه گرفته شده برای آن
آزاد شود.

مثال برای فراخوانی پنجره ای که هر از گاهی باید اجرا بشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در ضمن حتما باید از منوی Project گزینه ...Options رو بزنی و در صفحه باز شده از برگه Forms فرم Form1 رو از لیست Auto-creat forms

به لیست Available forms انتقال بدی. در غیر این صورت کار بیهوده میشه.

مرد مباح
20-10-2007, 21:15
همه راه ها گفته شده.
ولس مشکل اصلی شما به احتمال زیاد توی کد نویسیتونه. چون نیازی به این همه فضا نداری.
یا کدت رو بزرا که بتونیم نظر بهتری بدیم و یا خودت بگرد و اشکالاتت رو رفع کن.

hamedvahedi
15-11-2007, 20:25
من هم فکر می کنم که فرم ها و متغيرها به صورت public تعریف شده اند و فرم ها هم در dpr ساخته ميشن. و براي همين همه اين اطلاعات ميرن تو رم و ...
اما من يه سئوال ديگه دارم. چه کار کنم که حجم فايل هاي اجرايي نوشته شده در دلفي ام کم بشن؟ به نظر من حجم برنامه هاي من زيادن. با وجود اينکه سعي مي کنم از API بيشتر استفاده کنم، کمتر صرفه جويي ميشه