PDA

View Full Version : چگونه می توان سرعت انتقال فایل به لیست باکس را افزایش داد ؟



dele_ghamgin_2008
پنج شنبه 14 خرداد 1394, 08:52 صبح
سلام . من یک فایل دارم که توش 2 میلیون آیتم قرار داره . چگونه می توانم به لیست باکس منتقل کنم ؟ این حرکت 1 ساعت زمان می برد تا یک یک خط ها را بریزد توی لیست باکس . آیا راه دیگری دارد که سریع انجام شود ؟

parvizwpf
پنج شنبه 14 خرداد 1394, 09:21 صبح
چه نیازی هست که همه بیان توی یک کنترل؟

dele_ghamgin_2008
شنبه 16 خرداد 1394, 21:30 عصر
چه نیازی هست که همه بیان توی یک کنترل؟

چون میخوام بر اساس این 2 میلیون آیتم سرچ انجام بدم .

mahlake
شنبه 16 خرداد 1394, 21:59 عصر
چون میخوام بر اساس این 2 میلیون آیتم سرچ انجام بدم .

سلام منم چند ساعت پیش یه تاپیک زدم با همین موضوع بچه ها کمک های خوبی کردن... منم دقیقا مشکل شما رو دارم...

http://barnamenevis.org/showthread.php?497703-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D8%B3%D8%B1%DB%8C%D8%B9%D8%AA%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-combobox

dele_ghamgin_2008
شنبه 16 خرداد 1394, 23:11 عصر
سلام منم چند ساعت پیش یه تایپینگ زدم با همین موضوع بچه ها کمک های خوبی کردن... منم دقیقا مشکل شما رو دارم...

http://barnamenevis.org/showthread.php?497703-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D8%B3%D8%B1%DB%8C%D8%B9%D8%AA%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-combobox

ممنونم . ولی به نتیجه نرسیدم . چون من همون ابتدا کار میخوام یه لیست رو به برنامه بدم که شامل 2 میلیون آیتم هست و برای وارد کردن همین ابتدا کلی زمان میگیرد تا همه آیتم ها را در لیست باکس اد کند.

farhadr1375
سه شنبه 19 خرداد 1394, 00:47 صبح
سلام. بقول دوستمون چه لزومی داره حتما بریزیش توی لیست باکس؟؟ بریزش تو یه ارایه بعد سرچتو انجام بده

dele_ghamgin_2008
سه شنبه 19 خرداد 1394, 11:09 صبح
سلام. بقول دوستمون چه لزومی داره حتما بریزیش توی لیست باکس؟؟ بریزش تو یه ارایه بعد سرچتو انجام بده

حتما یه لزومی داره که میخوام این کار رو انجام بدم دیگه . شما به لزومش کار نداشتید باشین . برای مسئله ی مطرح شده راه حل ارائه بدید . صورت مسئوله رو پاک نکنید. با تشکر

hamid_hr
سه شنبه 19 خرداد 1394, 11:38 صبح
چیزی که به ذهن من میرسه
شما دو راه کلی برای خوندن از فایل داری
1 استفاده از StreamReader
2 - استفاده از توابع اماده IO.File مثل ReadAllLines یا readAllText
بهترین راه برای فهمیدن سرعتشون اینه که تست کنین
خودتون یه تست بکنین ببینین کدوم سرعتش بهتره
یه فایل رو با هر دو روش باز کنین بخونین و بریزین تو لیست باکس

فقط برا ریختن تو لیست باکس یه
List<string lst = new List<string>();
درست کنین بعد همه خطهای فایل رو بریزین تو این لیست بعد با متد
lbx.Items.AddRange(lst);
بریزین تو لیست باکس تون

dele_ghamgin_2008
چهارشنبه 20 خرداد 1394, 14:17 عصر
چیزی که به ذهن من میرسه
شما دو راه کلی برای خوندن از فایل داری
1 استفاده از StreamReader
2 - استفاده از توابع اماده IO.File مثل ReadAllLines یا readAllText
بهترین راه برای فهمیدن سرعتشون اینه که تست کنین
خودتون یه تست بکنین ببینین کدوم سرعتش بهتره
یه فایل رو با هر دو روش باز کنین بخونین و بریزین تو لیست باکس

فقط برا ریختن تو لیست باکس یه
List<string lst = new List<string>();
درست کنین بعد همه خطهای فایل رو بریزین تو این لیست بعد با متد
lbx.Items.AddRange(lst);
بریزین تو لیست باکس تون

این هم نتیجه نداد . هردوش خیلی طول کشید

reza_ali202000
چهارشنبه 20 خرداد 1394, 14:45 عصر
از ترد استفاده کنید.
ولی بازم فکر نمیکنم توی سرعت لود از فایل(نه از دیتابیس) تاثیر محسوسی داشته باشه.
به نظرم اگه بتونی این قسمت رو با C++‎‎ انجام بدی سرعتت بهتر بشه.
یه نمونه هم اتفاقا دیدم که هم برنامه C# بود و هم c++. از فایلی به حجم 4گیگ اطلاعات رو میخوندن. که سی پلاس پلاس مثل اب خوردن بازش میکرد. اتفاقا فایله هم txt بود!
(فایل کدملی مال انتخابات)

dele_ghamgin_2008
پنج شنبه 21 خرداد 1394, 17:47 عصر
از ترد استفاده کنید.
ولی بازم فکر نمیکنم توی سرعت لود از فایل(نه از دیتابیس) تاثیر محسوسی داشته باشه.
به نظرم اگه بتونی این قسمت رو با C++‎‎‎ انجام بدی سرعتت بهتر بشه.
یه نمونه هم اتفاقا دیدم که هم برنامه C#‎ بود و هم C++‎. از فایلی به حجم 4گیگ اطلاعات رو میخوندن. که سی پلاس پلاس مثل اب خوردن بازش میکرد. اتفاقا فایله هم txt بود!
(فایل کدملی مال انتخابات)

مرسی گلم . ولی من به سی شارپ نیاز دارم.

ali_md110
دوشنبه 25 خرداد 1394, 17:48 عصر
این فایل شما چیه؟ فایل Textمعمولی هست؟
بعدش جستجو زدن که حتمن نیاز به دیدنشون توی لیست نیست شما میتونید از منبع درخواست و نمایش بدید نمایش یکباره 2 ملیون رکورد توی لیست به نظرم کمی غیر حرفه ای هست معمولا از Paging استفاده میشه تا بصورت دسته ای رکورد نمایش داده بشه

dele_ghamgin_2008
سه شنبه 26 خرداد 1394, 17:46 عصر
این فایل شما چیه؟ فایل Textمعمولی هست؟
بعدش جستجو زدن که حتمن نیاز به دیدنشون توی لیست نیست شما میتونید از منبع درخواست و نمایش بدید نمایش یکباره 2 ملیون رکورد توی لیست به نظرم کمی غیر حرفه ای هست معمولا از Paging استفاده میشه تا بصورت دسته ای رکورد نمایش داده بشه

تصویر زیر را ببینید ، وقتی کلمه لاهیجام را نوشتم ، از بین لیست اول سمت چپ سرچ کرد و هر آیتمی که توش لاهیجان بود رو آورد لیست سمت راست .

132331

ali_md110
سه شنبه 26 خرداد 1394, 20:51 عصر
منبع اطلاعاتی رو مشخص نکردید و اینکه از چه روشی استفاده میکنید Ado.net و غیره
به نظر من اگر میخواین 2 میلون رکورد در لیست سمت چپ نشون بدید از Backgroundworker ویا از async بهره ببرید و از صفحه بندی استفاده کنید تا در پس زمینه عملیات لود انجام بشه
بعد جستجو زدن سمت راست هم باز از منبع باشه

dele_ghamgin_2008
چهارشنبه 27 خرداد 1394, 14:33 عصر
منبع اطلاعاتی رو مشخص نکردید و اینکه از چه روشی استفاده میکنید Ado.net و غیره
به نظر من اگر میخواین 2 میلون رکورد در لیست سمت چپ نشون بدید از Backgroundworker ویا از async بهره ببرید و از صفحه بندی استفاده کنید تا در پس زمینه عملیات لود انجام بشه
بعد جستجو زدن سمت راست هم باز از منبع باشه

اینارو هم انجام دادم . ولی نتیجه نداشت

reza_ali202000
چهارشنبه 27 خرداد 1394, 15:38 عصر
ببخشید اگه اطلاعات محرمانه نیس برنامتون رو بزارید تا ببینیم با الگوریتم های دیگه میشه پیاده سازیش کرد و بهینه بشه.