با سلام چگونه می توان پس از انجام یکسری عملیات سنگین در سی شارپ منابع سیستم مانند سی پیو مصرفی و یا متغیرها را آزاد نمود ایا این امکان وجود دارد چون من از کویری هایی در سیستم استفاده می کنم که فوق العاده سنگین هست و به نطرم میاد باید پس از استفاده از ان ها منابع سیستم را ازاد نماییم ممنون میشم راهنمایی کنید
خب بهتر بود قدری بیشتر در مورد کوئری هایی که نوشتید و متغیرهایی که استفاده کردید توضیح می دادید.
راه حل اول : استفاده از معماری مناسب
اگر پروژه شما یک پروژه بزرگ هست برای استفاده هر چه بهتر از منابع سیستمی بهتره که حتما پروژه شما یک معماری خاص رو داشته باشه. (معماری پیازی و معماری تمیز) معماری پروژه علاوه بر اینکه یک ساختار قدرتمند و منظم رو به پروژه شما میده استفاده از منابع سیستمی رو هم کاهش میده.
مثلا در مورد معماری پیازی و الگوی Unit Of Work اگر بخوام توضیح بدم در این معماری دیتابیس رو به پایین ترین سطح پروژه انتقال می دهیم و برای استفاده از اون از اینترفیس ها و همچنین الگوی UOW استفاده می کنیم. در این الگو همیشه کنترل میشه که بیشتر از یک نمونه از دیتابیس در سرور new نشده باشه و خب این خودش تا حد بسیار زیادی باعث کاهش استفاده از منابع سیستمی میشه. در حالی که اگر این کنترل ها انجام نشه در هر یک از عملیات سیستم یکبار یک نمونه از دیتابیس ایجاد میشه که بار زیادی رو روی سرور میذاره.
در واقع در UoW بعد از استفاده از دیتابیس نمونه ایجاد شده از دیتابیس از بین میره
_context.Dispose()
راه حل دوم : استفاده از متغیرها به صورت صحیح
یکی از موارد دیگه ای که میتونه خیلی توی مصرف منابع سیستمی موثر باشه استفاده غیر اصولی از متغیر ها هست. یک مثال میزنم. فرض کنید در یک حلقه for میخواید یک رشته رو ایجاد کنید
string myText = "";
for (int i = 0; i < 1000; i++)
{
myText = i;
}
حب در حلقه بالا یک متغیر از نوع string داریم که در هر بار اجرای حلقه مقدار i در اون جایگزین میشه. در این حالت در هر بار اجرای حلقه باید مقدار قبلی در سلول حافظه پاک بشه و در سطل آشغال Ram سیستم قرار بگیره و مقدار جدید جایگزین بشه که زمان زیادی از Ram میگیره. در حالی که میشه همین کار رو توسط کلاس String انحام داد(کوچک و بزرگ بودن حرف s را در string و String دقت کنید.) در این حالت این عملیات بسیار بهینه تر انجام میشه.
راه حل سوم : استفاده از IEnumerable و IQueryable
خب مساله دیگه ای که در واکشی اطلاعات از دیتابیس وجود داره این هست که شما اطلاعات رو به صورت Eagle Loading واکشی می کنید یا Lazy Loading که این 2 در سرعت اجرا خیلی تفاوت ها دارن.
در مجموع باید اطلاعات بیشتری اراده بدید تا بشه بیشتر از این روی استفاده از منابع سیستمی توضیحات داد.
تاریخ :
1399/11/25
- ساعت :
11:22:00 AM
- بازدید :
3906
- پاسخ :
2
|
تاریخ :
1403/12/02
- ساعت :
12:09:00 AM
- بازدید :
280
- پاسخ :
1
|
تاریخ :
1398/07/08
- ساعت :
12:21:00 AM
- بازدید :
3058
- پاسخ :
2
|
تاریخ :
1403/11/23
- ساعت :
08:24:00 PM
- بازدید :
195
- پاسخ :
2
|
تاریخ :
1399/11/10
- ساعت :
10:01:00 PM
- بازدید :
7180
- پاسخ :
4
|
تاریخ :
1399/04/09
- ساعت :
08:51:00 PM
- بازدید :
3104
- پاسخ :
1
|
تاریخ :
1399/03/25
- ساعت :
08:58:00 PM
- بازدید :
3839
- پاسخ :
1
|
تاریخ :
1400/12/18
- ساعت :
10:24:00 AM
- بازدید :
2120
- پاسخ :
1
|
تاریخ :
1401/01/26
- ساعت :
12:14:00 PM
- بازدید :
3009
- پاسخ :
1
|
تاریخ :
1403/10/20
- ساعت :
11:39:00 AM
- بازدید :
276
- پاسخ :
1
|
تاریخ :
1404/01/16
- ساعت :
07:20:00 PM
- بازدید :
19
- پاسخ :
0
|
تاریخ :
1404/01/07
- ساعت :
05:02:00 AM
- بازدید :
102
- پاسخ :
1
|
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1321
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
72
- پاسخ :
1
|
تاریخ :
1398/08/23
- ساعت :
09:16:00 PM
- بازدید :
9862
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
12:18:00 PM
- بازدید :
42
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
10:39:00 AM
- بازدید :
49
- پاسخ :
1
|
تاریخ :
1404/01/02
- ساعت :
05:05:00 PM
- بازدید :
63
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
53
- پاسخ :
1
|
تاریخ :
1399/06/04
- ساعت :
02:25:00 PM
- بازدید :
4427
- پاسخ :
2
|