PDA

View Full Version : سوال: آیا راه حلی برای این مورد به ذهنتون می رسه؟ (درباره Serialization)



__IDIN
دوشنبه 13 آذر 1391, 12:52 عصر
درود بر همگی.

فرض کنید قراره لیستی از string ها توسط Serialization ذخیره بشه. این لیست مثلا شامل سه کلمه هستش.
زمانی که این لیست دخیره می شه لیست رو خالی کرده و کلمه های دیگری رو بهش اضافه می شه.
مثلا دو کلمه دیگه(لیست در حال حاضر دارای دو کلمه می باشد) حالا وقتی که بخوام همین لیست رو منظورم همین نمونه از لیست رو ذخیره کنم Serialization اون سه تای قبلی رو که در فایل ذخیره کردم رو پاک می کنه و این دو تای جدید رو جاش میزاره.

آبا روشی هستش که Serialization اطلاعات جدید رو به روی لیستی که ذخیره شده در فایل اضافه کنه؟ یعنی در این مثال هنگام Deserialize یک لیست با ۵ کلمه ساخته بشه به جای دو تا(رفتاری که درحال حاضر دارد).

FastCode
دوشنبه 13 آذر 1391, 13:07 عصر
میتونید Stream رو به فایل Append کنید و موقع deserialize تا زمانی که به انتهای فایل نرسیدید ادامه بدید.

بهتر نیست از یک دیتابیس مثل Sqlite یا Access استفاده کنید؟

__IDIN
دوشنبه 13 آذر 1391, 14:09 عصر
میتونید Stream رو به فایل Append کنید و موقع deserialize تا زمانی که به انتهای فایل نرسیدید ادامه بدید.

بهتر نیست از یک دیتابیس مثل Sqlite یا Access استفاده کنید؟

ممنون از جوابتون.
متاسفانه امکان استفاده از دیتابیس وجود نداره.
اگر لیست دارای مثلا ۱۰۰۰ عنصر باشه و این ۱۰۰۰ عنصر توسط Serialization بر روی دیسک ذخیره شده باشند. بخوایم مقدار یکی از این عناصر رو تغییر بدیم به نظر شما بهترین روش کدوم هستش؟
در حال حاضر باید همه هزارتا رو deserialize کنیم. عنصر مد نظر رو تغییر بدیم و دوباره ۱۰۰۰ تا عنصر رو serialize کنیم که از دیدگاه کارایی خیلی فاجعست.

روشی که پیشنهاد دادید در این حالت می تونه کمک کنه؟

FastCode
دوشنبه 13 آذر 1391, 21:24 عصر
سرعت افتضاح میشه ولی کار میکنه

__IDIN
دوشنبه 13 آذر 1391, 22:09 عصر
سرعت افتضاح میشه ولی کار میکنه
این کد قرار تو یک محیط RealTime اجرا بشه و از این لحاظ کارایی خیلی مهمه. برای همین نمیشه از این روش ها استفاده کرد.

FastCode
سه شنبه 14 آذر 1391, 00:34 صبح
ممکنه توضیح بدید که قراره چکار بکنید؟

RealTime با NoDelay فرق داره.کدوم؟

__IDIN
پنج شنبه 16 آذر 1391, 08:46 صبح
تو یه محیط realtime سه بعدی. برنامه در حال پردازش محیط سه بعدی هستش و زمان ذخیره تنظیمات امکان داره FPS به شدت پایین بیاد.

FastCode
جمعه 01 دی 1391, 18:48 عصر
ذخیره در دیسک نمیتونه ضربه ای به render بزنه.
اصولاً کسایی که گرافیک کار میکنن باید توی پردازش موازی استاد باشن.
بهتره از یه ترد دیگه برای ذخیره سازی استفاده کنید.

__IDIN
یک شنبه 03 دی 1391, 18:37 عصر
ممنون از پاسخ ولی نمی تونم از یه thread دیگه استفاده کنم.

FastCode
سه شنبه 12 دی 1391, 14:10 عصر
ممنون از پاسخ ولی نمی تونم از یه thread دیگه استفاده کنم.
چرا نمیتونید؟

hakim22
سه شنبه 12 دی 1391, 15:17 عصر
شما یک لیست مرجع میسازید. (بجای فایل مرجع) هر بار که لیست جدیدی خونده میشه به انتهای لیست مرجع اضافه می کنید و در نهایت لیست مرجع رو ذخیره می کنید !؟