PDA

View Full Version : مشکل اشغال زیاد حافظه وقتی برنامه اجرا میشه ...



barat121
پنج شنبه 01 شهریور 1386, 06:15 صبح
سلام

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

Batman
پنج شنبه 01 شهریور 1386, 07:37 صبح
با سلام
دوست عزیز قبلا بحث زیادی در این مورد شده و دلایل زیادی هم داره
استفاده از فرمهای زیادی
تجزیه و تحلیل اشتباه
طریقه کدنویسی
استفاده از کامپوننت ها برای زیباسازی
استفاده از عکس
و ...
موفق باشید

vcldeveloper
جمعه 02 شهریور 1386, 12:42 عصر
1- در هر زمان فقط DataSet هایی که به آنها نیاز دارید را Active کنید و سایر DataSet ها که نقشی در عملیات جاری سیستم ندارند را غیرفعال کنید.
2- برای هر DataSet فقط داده های مورد نیاز کاربر را لود کنید، نه کل رکوردهای جدول را.
3- اگر تعداد رکوردهای درخواستی کاربر زیاد است، رکوردها را در چند صفحه نمایش دهید و در هر صفحه فقط تعداد رکوردهای لازم برای نمایش در آن صفحه را لود کنید.
4- در صورت زیاد بودن فیلدها، یا حجیم بودن داده های آنها، برنامه را طوری طراحی کنید که کاربر در ابتدا به داده های کلیدی دسترسی داشته باشد و در صورت نیاز به داده های جزئی تر، نمایش جزئیات را درخواست کند.
5- کوئری ها خود را بررسی کنید تا Optimized باشند.
6- کدهای خود را چک کنید تا Optimized باشند؛ مثلا در صورت زیاد بودن فرم ها، همه را با هم Create نکنید، از DisableControls و EnableControls در DataSet ها به درستی استفاده کنید، از تصاویر حجیم در محیط برنامه استفاده نکنید و...
7- روش های بهینه کردن یک نرم افزار زیاد هستند، می تونید با تحقیق در این زمینه روش های دیگری هم پیدا کنید.
اینها برخی از روش هایی بود که می توانید سرعت لود شدن داده های بانک را افزایش دهید و حافظه اشغالی برنامه را کاهش دهید.

barat121
سه شنبه 13 شهریور 1386, 20:29 عصر
آقای کشاورز خیلی متشکرم از راهنمایی تان ولی آیا هیچ برنامه ای همه جدول ها رو در ابتدای برنامه اکتیو نمیکنه ؟

vcldeveloper
چهارشنبه 14 شهریور 1386, 00:18 صبح
آیا هیچ برنامه ای همه جدول ها رو در ابتدای برنامه اکتیو نمیکنه ؟
اگر به داده های همه آنها در زمان شروع به کار برنامه نیاز باشه، خب همه را Active می کند، وگرنه، نیازی نیست که بیخودی DataSet ها Active بشند و منابع سیستم را تلف کنند.