PDA

View Full Version : ساخت ارایه با حجم زیاد



sevenboys
سه شنبه 07 آذر 1391, 21:25 عصر
چگونه میتونم یک ارایه از نوع دابل بسازم که ده میلیارد خانه داشته باشه؟رم سیستم 1 گیگ است
اگه مشکل از رم هست یه راه حل بهم بگید ممنون میشم

plus
سه شنبه 07 آذر 1391, 21:33 عصر
من روی سیستمم به صورت معمولی امتحان کردم خطای Overflow داد در صورتی که میشد انتظار داشت سیستم عامل از Paging استفاده کنده و به من فضا بده.شاید بخاطر محدودیت Virtual Memory و آدرس دهی توی سیستم 32 بیتی من باشه...
یه راهش میتون این باشه که شما به صورت دستی از فضای Disk استفاده کنی، و یک سیستم Caching هم برای بهبود سرعتش بنویسی.مقادیر رو در فایل ذخیره کنی و فقط یک بازه (Page) رو در هر لحظه در حافظه نگه داره. در واقع همون Paging سیستم عامل رو دستی پیاده سازی کنی.البته این روش سرعتش قطعا پایین تر از نگه داری کل داده ها توی رم هست...

sevenboys
سه شنبه 07 آذر 1391, 21:58 عصر
متاسفانه نحوه نوشتن سیستم caching را نمیدانم راهنماییم کنی ممنون میشم
من روی سیستمم به صورت معمولی امتحان کردم خطای Overflow داد در صورتی که میشد انتظار داشت سیستم عامل از Paging استفاده کنده و به من فضا بده.شاید بخاطر محدودیت Virtual Memory و آدرس دهی توی سیستم 32 بیتی من باشه...
یه راهش میتون این باشه که شما به صورت دستی از فضای Disk استفاده کنی، و یک سیستم Caching هم برای بهبود سرعتش بنویسی.مقادیر رو در فایل ذخیره کنی و فقط یک بازه (Page) رو در هر لحظه در حافظه نگه داره. در واقع همون Paging سیستم عامل رو دستی پیاده سازی کنی.البته این روش سرعتش قطعا پایین تر از نگه داری کل داده ها توی رم هست...

saied_hacker
سه شنبه 07 آذر 1391, 22:07 عصر
برا اینه که نمی تونی :
In earlier versions of the .NET Framework, the following lines of code throw OutOMemoryException exceptions due to the 2-GB limit on object sizes on the GC heap. In the .NET Framework 4.5, the code succeeds, assuming that there is enough physical memory available on the machine:

new Object[1000000000]; //(approximate size of this array 8 GB)
new int[50000,50000]; //(approximate size of this array is 10 GB)
new Dictionary(1000000000); //(approximate underlying array size is 24 GB)

برو رو دانت نت 4.5

saied_hacker
سه شنبه 07 آذر 1391, 22:12 عصر
البته شمام رمت کمه پس باید virtual memory رو مقدارش رو افزایش بدی...

plus
سه شنبه 07 آذر 1391, 22:36 عصر
متاسفانه نحوه نوشتن سیستم caching را نمیدانم راهنماییم کنی ممنون میشم
توضیح کامل پیاده سازی Paging طولانیه و از توانایی و حوصله من خارجه فقط در حد ایده، شما اگه کل آرایه رو روی فایل داشته باشی، هر بار که میخوای یک مقدار از آرایه بخونی باید بری سراغ فایل و از فایل بخونی و این سرعت رو کاهش میده.
ایده اینه که شما هر بار که یک مقدار از آرایه رو از فایل میخونی، یه مقداری قبل و یه مقداری بعد تر از اون اندیس رو هم از فایل میخونی و توی رم سیستم نگه میداری.وقتی بار دیگه میخوای یک اندیس رو بخونی اولی بررسی میکنی میبینی آیا اون اندیسی که میخوای توی رم هست یا نه.اگه هست که از رم میخونی.اگه نیست دوباره میری سراغ فایل...اینطوری تعداد درخواست ها به فایل کمتر میشه و سرعت بهتر میشه.