PDA

View Full Version : پیمایش رکوردهای گرید ویو با سرعت بالا



narges_j
شنبه 06 مهر 1392, 20:14 عصر
سلام
من نیاز دارم روی یک گرید ویو که بیش از 8 هزار رکورد داره پیمایش کنم
برای پیمایش از حلقه for استفاده کردم ولی خیلی زمان می بره.ایا راه دیگری هست؟

نکته:مجبورم 8 هزار رکورد را باهم داشته باشم

veniz2008
شنبه 06 مهر 1392, 21:49 عصر
سلام.
یک مرحله به عقب برگردید شاید راه حل بهتر رو اونجا جا گذاشته باشید!
گرید رو با چی پر کردید؟ دیتاتیبل؟
اگر آره روی همون مانور بده خیلی سرعتش بیشتر هست تا اینکه روی خود گرید فیلتر بزنی.

samad1987
شنبه 06 مهر 1392, 22:46 عصر
ببینید دوستان اشتباه نکنید اینجا کار این دوستمون جستجو و از این حرفا نیس که بخوایم یه الگوریم به زمان کمتر ارائه بدیم این دوستمون میخواد همه ی خونه هارو پیمایش بکنه یعنی میخواد اطلاعات همه ی 8000 تا رو بخونه و روشون کار کنه و اگه بخوایم عقب گرد و اینارو استفاده کنیم علاوه بر زمان خوندن خونه ها زمان خواندن و نوشتن در استک رو برای هر 8000 تا باید به زمان کل اضافه کرد !!!
پس به قول استاد ترم یک ما :" همیشه بهترین راه منطقی ترینشونه"
و اینجا همون الگوریتم (!!!!!!!!!!!!) خودشون بهترینه یعنی teta(n)

veniz2008
شنبه 06 مهر 1392, 23:23 عصر
سلام.
یک مرحله به عقب برگردید شاید راه حل بهتر رو اونجا جا گذاشته باشید!
گرید رو با چی پر کردید؟ دیتاتیبل؟
اگر آره روی همون مانور بده خیلی سرعتش بیشتر هست تا اینکه روی خود گرید فیلتر بزنی.


ببینید دوستان اشتباه نکنید اینجا کار این دوستمون جستجو و از این حرفا نیس که بخوایم یه الگوریم به زمان کمتر ارائه بدیم این دوستمون میخواد همه ی خونه هارو پیمایش بکنه یعنی میخواد اطلاعات همه ی 8000 تا رو بخونه و روشون کار کنه و اگه بخوایم عقب گرد و اینارو استفاده کنیم علاوه بر زمان خوندن خونه ها زمان خواندن و نوشتن در استک رو برای هر 8000 تا باید به زمان کل اضافه کرد !!!
پس به قول استاد ترم یک ما :" همیشه بهترین راه منطقی ترینشونه"
و اینجا همون الگوریتم (!!!!!!!!!!!!) خودشون بهترینه یعنی teta(n)
والا ما اشتباه نکردیم شما بد برداشت کردی.
کسی دم از تکنیک عقب گرد نزد.
روش خودشون 100% اشتباهه و چون زمان زیادی رو میبره به همین خاطر دنبال راه حل بهتر بودن.
منظور من از یک قدم عقب تر این بود که گرید رو ول کنه و به اون منبعی که باهاش گرید رو پر کرده بچسبه.

narges_j
شنبه 06 مهر 1392, 23:31 عصر
الگوریتم من یک فایل اکسل که یک دیتا ست هست را میگیره به یک دیتا ست باینری تبدیل میکنه و کار این الگوریتم این هست که یک سری قوانین حساس را میگیره و آنها را با روشی که بهش دادم پنهان میکنه.این الگوریتم 8 هزار رکورد را پیمایش میکنه و رکوردهای حساس و غیر حساس را جدا میکنه و هر تغییر ی بخوام بدم باید به این 8 هزار رکورد دسترسی داشته باشم.
راه حل پیشنهادی شما چی هست؟

نکته:رکورد حساس رکوردی که در ان ایتم حساس باشه و ایتم حساس ایتمی که در قانون حساس باشه.مثلا


a--->dc

یک قانون حساس و ایتم حساس a d c
رکورد حساس رکوردی که شامل a c d
همین طور که می بینید مجبور همه سطرها و ستون ها را پیمایش کنم.

الان الگوریتم با دو قانون 45 ثانیه طول میکشه

veniz2008
یک شنبه 07 مهر 1392, 00:55 صبح
خیلی متوجه منظورتون از بحث حساس و غیر حساس نشدم.
چیزی که متوجه شدم اون 8000 رکورد رو میریزی تو دیتاست و بعد دیتاست رو میدی به گرید.
روی همون دیتاست فیلتر بزن (شرط رو اعمال کن) و نتیجه رو به گرید نسبت بده. یه مثال واست میذارم بهش دقت کن. در این مثال از فیلد StdID برای فیلتر کردن یک دانشجو از بین تمامی دانشجویان موجود در دیتاست استفاده شده.
شما میتونی هر شرطی رو که داری اعمال کنی روی دیتاست :

SqlConnection con = new SqlConnection("server = .\\md2012;DataBase = DBTest1;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("select * from TblStudent", con);
DataSet ds = new DataSet();
da.Fill(ds);
ds.Tables[0].DefaultView.RowFilter = "StdID = " + TxtStudentID.Text;
da.Fill(ds.Tables[0].DefaultView.ToTable());
dataGridView1.DataSource = ds.Tables[0].DefaultView.ToTable();

narges_j
یک شنبه 07 مهر 1392, 01:00 صبح
نه اصلا از دیتا ست استفاده نمیکنم.منظورم از دیتا ست اطلاعات یک بانک هست که برای تست الگوریتم استفاده میکنم این دیتا ست ها روی اینترنت هست.این دیتا ست ها بصورت یک فایل اکسل هستند.

veniz2008
یک شنبه 07 مهر 1392, 01:07 صبح
نه اصلا از دیتا ست استفاده نمیکنم.منظورم از دیتا ست اطلاعات یک بانک هست که برای تست الگوریتم استفاده میکنم این دیتا ست ها روی اینترنت هست.این دیتا ست ها بصورت یک فایل اکسل هستند.
این فایل اکسل رو چطور به گرید نسبت می دید؟ با چه شی ای؟ کدتون رو بذارید.

narges_j
یک شنبه 07 مهر 1392, 01:16 صبح
یکی از روش هام .فایل اکسل را میگیرم تبدیل به باینری میکنم و داخل گرید میریزم.
روش دوم فایل باینری اماده را می گیرم و داخل گرید میریزم.

تو روش دوم مثل کوئری اس کیو ال کار میکنم ولی روش اول اینطوری نیست.
من نمیتونم فیلتر بزنم چون همه اطلاعات رکوردهام میخوام.


مثل اینکه هیچ راهی وجود نداره :ناراحت:

http://intext.nav-links.com/images/spinner-ani48.gif